我已经通过嵌入一个包含图标的标准Windows资源文件来创建一个简单的应用程序图标。 但是我还想在我的主应用程序窗口中使用这个图标。 有没有一种简单的方法可以做到这一点? 到目前为止,似乎唯一的方法是单独加载一个包含窗口图标的图标,而不是重用已经存在的图标。 这似乎是一个可怕的解决方案。 此外,实际图标嵌入在我的可执行文件中,我不想将其分发两次。
有人知道如何做到这一点吗?
有人知道如何做到这一点吗?
HICON hIcon = (HICON)LoadImage( GetModuleHandle( nullptr ), MAKEINTRESOURCE( IDI_ICON1 ), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT );
setWindowIcon( QIcon( QtWin::fromWinHICON( hIcon ) ) );
::DestroyIcon( hIcon );
#include <QtWinExtras/QtWin> /* ... */ HICON hIcon = (HICON)LoadImage( GetModuleHandle( nullptr ), MAKEINTRESOURCE( IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADTRANSPARENT ); this->setWindowIcon( QIcon( QtWin::fromHICON( hIcon ) ) ); ::DestroyIcon( hIcon );
- KungPhoo我认为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调用,使您的代码保持可移植性。不幸的是,为每个平台设置应用程序图标是不同的。因此,如果您想要可移植的代码,确实应该避免使用本地调用。