Qt应用程序和窗口下的窗口图标

时间:2011-06-29 15:17:50

标签: c++ windows qt icons

我通过嵌入包含图标的标准Windows资源文件创建了一个简单的应用程序图标。但是,我还想在我的主应用程序窗口中使用此图标。是否有捷径可寻?到目前为止,似乎唯一的方法是单独加载包含窗口图标的图标,而不是重用已经存在的图标。这似乎是一个可怕的解决方案。除了其他的东西,实际的图标嵌入在我的可执行文件中我不想分发它两次。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:7)

实际上......结果非常简单......

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

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

::DestroyIcon( hIcon );

答案 1 :(得分:5)

我认为Goz的帖子非常适合你的问题。 但是如果你想避免使用本机Windows API(实际上这是优选的,因为设置应用程序图标取决于平台)我会选择这种看似不那么优雅的方法:

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应用程序图标对于每个平台来说都是不幸的。因此,如果您需要可移植代码,则应该真正避免本机调用。