我通过嵌入包含图标的标准Windows资源文件创建了一个简单的应用程序图标。但是,我还想在我的主应用程序窗口中使用此图标。是否有捷径可寻?到目前为止,似乎唯一的方法是单独加载包含窗口图标的图标,而不是重用已经存在的图标。这似乎是一个可怕的解决方案。除了其他的东西,实际的图标嵌入在我的可执行文件中我不想分发它两次。
任何人都知道怎么做?
答案 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应用程序图标对于每个平台来说都是不幸的。因此,如果您需要可移植代码,则应该真正避免本机调用。