【问题标题】:QApplication::setWindowIcon works in Release & Debug but not on other computersQApplication::setWindowIcon 在 Release & Debug 中有效,但在其他计算机上无效
【发布时间】:2016-09-06 18:56:02
【问题描述】:

我有一个带有标题栏图标的小型 Windows 应用程序,它在我的开发机器(发布和调试)上工作正常,但它不能工作其他机器。一般来说,我的 Qt 4.8.5 代码如下所示:

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    Q_INIT_RESOURCE(gcapp);
    app.setWindowIcon(QIcon("./gc.ico"));
    GCApp dialog;
    dialog.show();
    return app.exec();
}

我已经使用以下选项尝试了许多迭代:

app.setWindowIcon(QIcon("gc.ico"));
app.setWindowIcon(QIcon(":/gc.ico"));
app.setWindowIcon(QIcon(":gc.ico"));

我还尝试在 NetBeans 项目的资源文件部分添加 gc.ico。我已经编辑了项目属性、自定义定义(这些更改了 .pro 文件)并尝试了以下操作:

RC_ICONS = gc.ico
RC_ICONS += gc.ico
win32:RC_ICONS = gc.ico

上述所有内容的大多数组合都显示了开发机器上发布和调试可执行文件的标题栏中的 gc.ico 文件。它们都不能在其他机器上工作。

我将 gc.ico 包含在目标计算机上的目录中,与发布可执行文件一起。

【问题讨论】:

  • 这些“其他机器”是什么?他们是否支持 .ico 图形格式?如果您使用 .png 代替它是否有效?
  • 所有目标机器和我的开发机器都是Windows 10 PC。我最初使用 .gif,后来在发表这篇文章之前切换到 .ico。您是否认为 .png 可能会产生与 .gif 和 .ico 不同的结果?

标签: netbeans qt4 mingw


【解决方案1】:

首先阅读The Qt Resource System

您应该在 qt 资源控制下添加您的gc.ico。然后你可以设置应用程序图标,如下所示:

app.setWindowIcon("qrc:///icons/gc.ico");

【讨论】:

  • 谢谢,但这个答案并没有解决问题。我对 Qt 资源系统非常熟悉,甚至在发帖后重读了很多遍。当我将图标放入 qrc 文件(将其放入 pro 文件)时,我看到发布的可执行文件大小增加了 10kB。 qrc:/// 命名法不适用于我的电脑或其他电脑。使用 :/ : ./ 且没有前缀的 QIcon() 调用都适用于我的 PC,但不适用于其他 PC。我有一个示例项目来说明这个问题,但 Stackoverflow 不允许附件。如果有人感兴趣,我可以在其他地方举办。
猜你喜欢
  • 2019-05-18
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
相关资源
最近更新 更多