【问题标题】:Use of Qt standard icons from within Qt Creator在 Qt Creator 中使用 Qt 标准图标
【发布时间】:2012-08-31 05:55:00
【问题描述】:

我想使用 Qt Standard 图标 (as here)。我发现了很多如何set the icons programmatically(代码中的运行时)的示例。

但是,如何在 Qt Creator 中设置“标准图标名称”(例如 application-exit)?这个blog here 说,我只是将主题设置为相应的名称。但是我没有这样的主题属性,我会得到一个带有资源的弹出窗口(下面的截图)。

应用“标准名称”(例如application-exit)的正确位置在哪里?

从 2.4.x 更新到 Qt Creator 2.5.2 为我提供了上述博客中的“主题”属性,但仍然没有可见的图标。 还需要什么才能使图标可见?

备注 Qt 4.8.1,现在更新到 2.5.2,Windows 7

【问题讨论】:

    标签: windows-7 icons qt-creator


    【解决方案1】:

    主题图标仅在 Linux/X11 上受支持。在 Windows 和 OS X 上,您必须提供自己的图标。

    解决此问题的方法是在 QtCreator 中设置主题名称(如您的示例中所示)。然后,您必须在资源中的前缀“:/图标”下提供相同别名的图标。您可以利用公共领域中可用的集合中的图标,例如流行的 Tango 图标集。

    如果您只针对 Windows 平台,主题设置对您毫无用处。如果您同时针对 Linux/X11 和其他平台,使用此解决方案,您可以在一个系统上获得本机图标,在其他系统上获得您自己提供的图标。

    你可以在这里找到一个很好的解释: http://mithatkonar.com/wiki/doku.php/qt/icons

    【讨论】:

    • 在其他操作系统中,有相当多的标准图标用于工具栏等。并且有这些图标主题。例如:commons.wikimedia.org/wiki/Tango_iconsgnome-look.org/content/show.php/?content=122078 如您所见,这是一个非常好的概念,因为所有使用这些标准图标的应用程序都可以很好地适应用户也可以自定义的任何桌面环境。
    • 请注意,我之前的 cmets 是对 cme​​ts 的回复,现在已删除。很抱歉造成混乱。
    【解决方案2】:

    @ypnos 建议与解决问题的多种方法建立一个很好的链接。我最喜欢最后一个 - Creating a custom icon theme。作者陈述了三个优点(适用于所有平台出色的大小调整涵盖所有需要的图标)和两个缺点(不一致带有系统图标主题实施起来很痛苦)。 在这里我建议改进以消除缺点。

    我从 github 克隆了 Tango 图标集。存储库https://github.com/ppinard/qtango 已经包含 index.theme 文件。但主要是它带来了一个Python脚本generate_rcc.py,可以自动生成*.qrc文件。我只需要将subprocess.check_call() 的参数从'--binary''--compress' 更改为'-binary''-compress'。生成的文件包含绝对路径,但这很容易查找和替换。可以将此脚本用于任何图标集 - 解决了第一个费力的步骤。

    现在,使用“主题”属性,您可以在 Qt 设计器中定义图标,如问题中所示。对于在 Linux 下开发的用户,system 图标将直接显示在设计器中(假设图标集使用标准图标名称)。这是本机外观(图标将在您的系统设置中进行配置)。这让您摆脱了ui->action_Open->setIcon(...) 编码。

    最后的调整是在 ui 设置之前设置主题。

    MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent)
    {
    #ifdef _WIN32
      QIcon::setThemeName("tango");
    #endif
    
      ui = new Ui::MainWindow;
      ui->setupUi(this);
    
      ...
      // NO NEED FOR ui->action_Open->setIcon(...)
    }
    

    #ifdef 当然可以调整为针对所有需要的平台,或者省略以在包括 Linux 在内的所有平台上强制使用相同的图标。

    因此,这种方法避免了所有费力的编码,并且结果至少在 Linux 上与系统图标一致。

    【讨论】:

      【解决方案3】:

      很遗憾,通过 Qt Designer 的图标主题选项在 Windows 上不可用。

      【讨论】:

      • 你的意思是它不能在 Windows 下运行吗?因为 - 如上面的屏幕截图所示 - 可以设置主题。不可用对我来说意味着,该选项根本不可用。这被认为是一个错误还是 Qt 团队的设计决定?有没有提供更多细节的参考资料?
      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多