介绍
我需要在我的应用程序窗口的左上角和任务栏(Windows 10)设置一个图标。但是,它仅部分工作 - 我可以设置.exe图标,但是仅此而已。在其他两个地方,我有默认图标。我正在与QT 5.9.7合作2017年Visual Studio。
到目前为止我测试了什么
我在我的.rc
IDI_ICON1 ICON "favicon.ico"
让我拥有.exe图标。但这似乎不会影响其余的框架。我试图以这种方式设置应用程序图(main.cpp
):
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.setWindowIcon(QIcon(":/favicon.ico"));
// a.setWindowIcon also doesn't work.
return a.exec();
}
甚至在内部
mainwindow.cpp
nover似乎被忽略了 - 它没有效果,也不会给我任何错误。我还试图包括MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowIcon(QIcon(":/favicon.ico"));
}
folllowingthis教学 - 仍然没有运气。 问题
SO-如何正确设置其他两个图标 - 在Windows任务栏上以及在我的应用程序窗口的角落? Edit: 添加
imageformats/qico.dll
文件也无法解决问题。
在您不使用Creator / Qmake的情况下,您需要遵循QT文档的步骤:
如果您不使用Qmake,则必要的步骤是:首先,创建.rc 文件并在.rc文件上运行RC或Windres程序,然后链接您的 使用结果.RES文件的应用程序。
将为Windows Explorer / Taskbar创建图标。左上图是通过将其添加到QRC文件并将其与资源编译器一起编译而创建的。需要通过调用应用程序为您的qapplication-instance来设置此图标。
首先 - 事物与
qrc
或文件无关,甚至可以直接从App Directory加载图标。问题在于受支持的格式 - 出于某种原因,在Windows 10下,QT Framework中的
app.setWindowIcon(QIcon(":/favicon.ico"));
.rc
格式存在问题。理论上添加
.qrc
应该解决问题,但事实并非如此。解决方案是使用其他格式(在我的情况下),并将其直接放置在
.ico
文件所在的位置,而不是在任何子目录中。然后,您可以这样称呼:
在线,如果您想以二进制形式编译图标,则可以尝试将其添加到资源中,但是格式仍然不得不使其起作用,因为这是问题的来源。图标的大小是正确调整的,因此在App窗口的一角和任务栏上看起来都不错 - 因此,在这种情况下,
.png
足够了。
也许我解决了这个问题。 .RC文件是在添加资源时手动创建的还是自动创建的?如果后者,则Visual Studio生成resource.h文件。在此文件中,您需要评论该行#定义IDI_ICON1101
到了一切工作