Qt/C++:程序运行时图标未显示

15

我在Qt Designer中的MainWindow中向我的QToolBar添加了一个QAction,并为该操作添加了一个图标(使用“选择文件”并选择与我的项目和源代码位于同一目录中的.png)。图标在Qt Designer中的工具栏中显示得很好,但在项目运行时不显示。在Windows上选择标题栏图标时我也遇到了类似的问题。我以前从未在Qt中使用过图形,我需要做些特别的事情吗?

截图:

7个回答

14

我发现自己已经做了所有正确的事情,添加了一个qrc文件并将我的图标放在那里。但是当我运行程序时,没有任何反应。

结果是我忘记了运行qmake

  • 右键单击项目名称并选择“运行qmake”。或者转到“构建>运行qmake”。

每次更改.pro文件中的内容后,都需要重新运行qmake。隐式创建资源文件会向.pro文件添加参数,因此您需要这样做。

希望它能帮助其他人。


12

您是否制作了QRC文件(即Qt的资源文件)?如果没有,那就可以解释您看到的情况。图标将显示在创建者中,但不会出现在最终编译的可执行文件中。请查看此链接:

http://doc.qt.io/qt-5/resources.html


我之前没有设置,现在正在尝试。显然你可以在Qt Creator IDE中编辑/设置资源,但我找不到文档中提到的这个资源浏览器(http://doc.troll.no/4.7/designer-resources.html)。文档中提到了Tools->Resource Browser,但我找不到它。你对此熟悉吗?谢谢! - Joseph
1
你需要先向项目中添加一个新的资源文件(即QRC文件)。一旦完成,你将会看到资源浏览器。请参考这个链接:http://www.qtforum.org/article/33043/resource-browser-option-missing.html。 - Bart

6

对于阴影构建,同样不要忘记在应用程序可执行文件上使用windeployqt.exe。之后,将向您的构建目录添加几个文件夹。特别是两个重要的文件夹:iconenginesimageformats,其中包含加载和绘制图标所需的多个dll。


这个 .exe 文件在哪里? - Schütze
你也可以直接删除阴影构建。我遇到了同样的问题。 - JCode_918

1

你尝试打开项目文件了吗?例如,我的项目文件名为menu.pro,它包含以下内容:

TEMPLATE = app
QT = gui core
CONFIG += qt debug warn_on console
DESTDIR = bin
OBJECTS_DIR = build
MOC_DIR = build
UI_DIR = build
FORMS = ui/mainwindow.ui
HEADERS = src/mainwindowimpl.h
SOURCES = src/mainwindowimpl.cpp src/main.cpp
RESOURCES = Images.qrc

最后一行 (RESOURCES = Images.qrc) 是你需要放在你的项目文件中的内容:当然,使用你为资源文件使用的名称,在我的情况下,它是 Images.qrc


1

还要确保在代码中包含qrc文件(例如在main(...)中)Q_INIT_RESOURCE(MyIconResource);,以免在最终的exe中缺少图标。


1
  1. 在添加图标时,请使用“选择资源”选项,而不是“选择文件”选项。
  2. 右键单击项目名称,然后单击“运行qmake”。

0

我也遇到过这样的问题。在我的情况下,我关闭了Qt Creator并删除了构建文件夹(类似于build-projectname..)。然后重新启动Qt Creator。然后神奇地,我的图标出现在运行的应用程序上。

当Qt表现不佳时,我经常使用这个技巧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接