10

我遵循了Qt 资源系统指南,并且.ico 图标出现在 Linux 上。

当我尝试从 Qt Creator 运行应用程序时,图标未显示在 Windows 上。

怀疑基于Qt/C++ 的插件问题:在 Windows 操作系统下运行程序时图标未显示,但我无法从指南How to Create Qt Plugins中弄清楚该怎么做。

是插件问题还是为什么 Windows 上没有显示图标?

如果是插件问题:如何告诉我的应用程序在哪里可以找到 qico.dll?


环境细节:

适用于:Kubuntu 12.04 LTS、Qt Creator 2.4.1 和 Qt 4.7.4(64 位)

失败:Windows XP SP2 32 位、Qt Creator 2.4.1 和 Qt 4.7.4(32 位)

Everyting 是默认设置(开箱即用),我没有弄乱设置。

资源.qrc

<!DOCTYPE RCC><RCC version="1.0">
    <qresource>
        <file>images/spreadsheet.ico</file>
    </qresource>
</RCC>

也试过了<qresource prefix="/">

来自application.pro

RESOURCES += \
    resources.qrc

OTHER_FILES += \
    images/spreadsheet.ico

在对应的源文件中

QIcon(":/images/spreadsheet.ico")

我也尝试过在 Windows 上部署应用程序

QDir plugins(QCoreApplication::applicationDirPath()+"/plugins");

qDebug() << "Plugin directory" << plugins.absolutePath() << "found?" << plugins.exists();

app.addLibraryPath(plugins.absolutePath());

使用插件目录中的 qico.dll。它应用程序打印插件目录存在,但图标仍然不显示。

我再说一遍:它适用于 Linux。

4

2 回答 2

17

对于未来的谷歌访问者:您可以阅读问题下的评论,因为这是该答案的诞生地。

所以问题是默认情况下ico不支持格式QIcon,你需要一个插件。在这种情况下QImageReader::supportedImageFormats(),列出 QIcon 支持的格式的函数可能会有所帮助。

如果您的格式不受支持,您可以尝试将imageformats文件夹从 Qtplugins目录复制到可执行文件所在的目录中。如果您的应用程序位于c:\myapp文件夹中,您应该有c:\myapp\imageformats文件夹(不是c:\myapp\plugins\imageformats)。否则,您必须使用QCoreApplication::addLibraryPath.

还要确保qico4.dllqicod4.dll(如果你在调试模式下构建)在那里。

于 2012-12-15T15:04:04.873 回答
0

只是为了详细说明QCoreApplication::addLibraryPath- 事情:

您需要使“插件”文件夹可用。不是子文件夹!

这是Python / PySide用户使用 PySide 包位置的一种方式。如果您已经有一个实例,您也可以只使用您的QtGui.QApplication实例,该实例位于此处:app

pyside_plugin_path = os.path.join(sys.modules['PySide'].__path__[0], 'plugins')
app.addLibraryPath(pyside_plugin_path)

并且已经感谢了doc

于 2016-11-10T16:41:37.207 回答