【问题标题】:How can I use image in qt with pure c++ environment?如何在纯c++环境中使用qt中的图像?
【发布时间】:2020-05-14 09:06:16
【问题描述】:

我正在编写一个没有 QT IDE(在 clion 中)的 GUI。我想在我的 GUI 中使用图像(QICON)。我做了一些研究,QT 官方网站告诉我“资源系统基于紧密合作在 qmake、rcc(Qt 的资源编译器)和 QFile 之间。”。我不想使用 qmake、.qrc 文件。

我可以使用绝对路径或 QIcon(QDir::currentPath()。但是当我更改工作路径时,此方法工作不正确(图形未显示在 GUI 中)。

那么,如何在没有 qmake,.qrc 的情况下正确使用图像文件?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    如果您不想处理 Qt 资源系统,您可以将图像转换为 XPM format,这是图像的文本表示,并将其嵌入到您的源代码中.有很多在线转换器可供您使用。

    例如,您可以将转换后的图像存储为源代码中的static char *数组,并在GUI中使用,如下:

    /* An image in XPM */
    static char *imageTxt[] = {
        /* columns rows colors chars-per-pixel */
        "300 292 64 1 ",
        "  c black",
        etc.
    [..]
    
    QLabel l;
    l.setPixmap( QPixmap(imageTxt) );
    l.show();
    

    基本上,这就是 Qt 的资源系统自动执行的操作。

    【讨论】:

    【解决方案2】:

    鉴于您没有通过 Qt 资源系统分发有问题的图像(例如,将图像打包到应用程序二进制文件中),我假设您将图像与应用程序二进制文件。

    在这种情况下,QCoreApplication::applicationDirPath() 很可能满足您的需求。

    【讨论】:

      【解决方案3】:

      正如其他答案所说,有一些方法可以在不使用 Qt 资源系统的情况下做到这一点。然而,还有一种方法可以将 Qt 资源系统与 CMake 以及扩展 CLion 一起使用。

      CMake 有一个名为AUTORCCoption,您可以像AUTOMOC 一样打开它,它会正确处理您的.qrc 文件。如果您选择 CMake 选项,这实际上是 QtCreator 使用的。

      您所要做的就是打开AUTORCC 并将您的 qrc 文件添加到您的源中,例如:

      set(AUTORCC ON)
      ...
      add_target(my_target my_qrc_file.qrc ...)
      

      然后您可以正常访问资源系统中的内容(例如,您的图像的路径为:/my_image)。

      【讨论】:

        【解决方案4】:

        使用相对路径。 确保图像文件与您的程序位于同一目录中,或者图像文件位于程序目录的子目录中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-20
          • 2015-12-16
          • 1970-01-01
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多