Приложение Qt и иконка окна под окнами - PullRequest
4 голосов
/ 29 июня 2011

Я создал простой значок приложения, встроив стандартный файл ресурсов Windows, содержащий значок.Однако я также хотел бы использовать этот значок в моем главном окне приложения.Есть простой способ сделать это?До сих пор кажется, что единственным способом было бы отдельно загрузить значок, содержащий значок окна, а не повторно использовать уже существующий значок.Это кажется ужасным решением.Помимо прочего, в мой исполняемый файл встроен настоящий значок, и мне не нужно распространять его дважды.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

На самом деле ... получается очень и очень просто ...

HICON       hIcon   = (HICON)LoadImage( GetModuleHandle( nullptr ), MAKEINTRESOURCE( IDI_ICON1 ), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT );

setWindowIcon( QIcon( QtWin::fromWinHICON( hIcon ) ) );

::DestroyIcon( hIcon );
5 голосов
/ 29 июня 2011

Я думаю, что сообщение от Goz - хороший вариант для вашего вопроса.Но если вы хотите избежать использования собственного API-интерфейса Windows (который на самом деле предпочтительнее, поскольку установка значка приложения зависит от платформы), я бы выбрал этот, казалось бы, менее элегантный подход:

1) in your .pro file:

   win32:RC_FILE=your_rcfile_with_icon.rc
   RESOURCES += qt_Resource_file.qrc

2) Add the same icon as in your .rc file to the qt .qrc file (i.e. embedd it twice)

3) in your main file:

   setWindowIcon(QIcon(":/the_icon.ico"));

Это позволяет избежать вызовов нативного API иваш код остается переносимымSEttign значок приложения, к сожалению, отличается для каждой платформы.Так что вы действительно должны избегать собственных вызовов, если вы хотите переносимый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...