Qt Gui 应用程序图标设置
Posted
技术标签:
【中文标题】Qt Gui 应用程序图标设置【英文标题】:Qt Gui Application icon setup 【发布时间】:2015-07-29 21:02:25 【问题描述】:我想为我的 qt gui 应用程序设置一个图标,并按照下列步骤操作:
1. create an ICO file bitmap That contains the icon image.
2. Store the ICO file in app's source code directory.
3. create a text file and added these lines "IDI_ICON1 ICON DISCARDABLE
4. myicon.ico" and saved it as "myicon.rc".
5. and added these lines in my .pro file "RC_FILE = MYICON.RC"
但它给出了这个错误:
mingw32-make[1]: * 没有规则来制作目标 '../Test/myicon.rc', 'debug/myicon_res.o' 需要。停止。 mingw32-make: * [调试] 错误 2 02:15:41:进程“C:\TDM-GCC-32\bin\mingw32-make.exe”退出 使用代码 2. 构建/部署项目测试时出错(套件: 桌面)执行步骤“制作”时
【问题讨论】:
这是为视觉工作室设计的。 不,我正在使用 Qt 创建器 是的,但是 Qt creator 本身并不是一个编译器,它需要一个编译器来完成它的工作。 是的,我知道那个哥们,我使用的是 MinGW (x86 32bit),因为我使用的是 32bit 系统。 【参考方案1】:您的问题可能是您将myicon.rc
作为常规文件包含在内,并且它被列为源文件。它不应该在那里或标题下列出,因为它没有通过正常的编译器。您确实需要将其列为RC_FILE = myapp.rc
。
http://doc.qt.io/qt-5/qmake-variable-reference.html#rc-file
请注意,.pro 中的ICON
仅在 mac 上使用。
http://doc.qt.io/qt-5/qmake-variable-reference.html#icon
我已包含示例代码,说明我通常如何处理我的 rc
文件、版本文件,以及它如何在 main.cpp
和 .pro
文件中使用。
这应该可以在 Qt Creator 和 Visual Studio 中使用。
以下是我在 Windows 中进行版本控制和图标时使用的文件:
myapp.rc
// http://***.com/questions/2784697/setting-application-info-in-qt
#include <windows.h>
#include "version.h"
// if you needed to maintain two different icons for your app, you could
// switch here using a #ifdef and #else
#define MYICON "my_icon.ico"
IDI_ICON1 ICON DISCARDABLE MYICON
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
版本.h
#ifndef VERSION_H
#define VERSION_H
#define VER_FILEVERSION 0,1,0,0
#define VER_FILEVERSION_STR "0.1.0.0\0"
#define VER_PRODUCTVERSION 15,07,01,50
#define VER_PRODUCTVERSION_STR "15.07.01.50"
#define VER_COMPANYNAME_STR "MySoft"
#define VER_FILEDESCRIPTION_STR "Star Runner"
#define VER_INTERNALNAME_STR "Star Runner"
#define VER_LEGALCOPYRIGHT_STR "Copyright © MySoft"
#define VER_LEGALTRADEMARKS1_STR "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR "star_runner.exe"
#define VER_PRODUCTNAME_STR "Star Runner"
#define VER_COMPANYDOMAIN_STR "mysoft.com"
#endif // VERSION_H
main.cpp
#include <QApplication>
#include "version.h"
#include <QSettings>
int main(int argc, char *argv[])
QApplication a(argc, argv);
a.setApplicationName(VER_PRODUCTNAME_STR);
a.setOrganizationName(VER_COMPANYNAME_STR);
a.setOrganizationDomain(VER_COMPANYDOMAIN_STR);
a.setApplicationDisplayName(VER_PRODUCTNAME_STR);
QSettings::setDefaultFormat(QSettings::IniFormat);
// Create the widget or main window here
return a.exec();
star_runner.pro
# all sorts of other things like SOURCES and HEADERS and FORMS, etc.
# ...
win32
# DEFINES -= UNICODE
RC_FILE += myapp.rc
macx
ICON = my_icon.icns
OTHER_FILES += \
my_icon.ico \
my_icon.icns \
myapp.rc
最后,在创建图标时,我通常使用 Gimp,使它们至少为 256x256,然后使用 Phoca Save Icons 以不同大小导出它们。其他时候我会制作一个 png,然后使用来自here 的东西。
希望对您有所帮助。
【讨论】:
感谢您的建议。但是遇到同样的错误,并且“mingw32-make[1]: *** No rule to make target '../Test/myicon.rc', 'release/myicon_res.o' 需要。停止。”这是什么意思?? 我猜在部署/构建项目时 qt 创建工具包中存在一些问题。有什么建议??? 尝试构建干净,并删除 Make.release 和 Make.deploy 文件。这通常会在更改 .pro 文件后解决一些挥之不去的问题。 现在又出现了一个错误,发布没有发生,给出错误“程序意外完成”,如果我没有涉及图标和所有这些东西,程序正在成功构建,我仍然得到那个“图标”错误,已经尝试了很多东西。 :( 我做了很多次“尝试构建干净,并删除 Make.release 和 Make.deploy 文件。这通常可以解决更改 .pro 文件后的一些挥之不去的问题。”【参考方案2】:Mingw 不知道如何处理 .rc 文件。
见:http://www.mingw.org/wiki/MS_resource_compiler
【讨论】:
所以我必须改变我的编译器,这就是你的意思。 ??你能详细说明一下吗,这可能会有所帮助。 要么你改变你的编译器,要么使用像我链接的页面中的windres这样的工具。以上是关于Qt Gui 应用程序图标设置的主要内容,如果未能解决你的问题,请参考以下文章