Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在qt中使用image与纯c++ ;环境_C++_Qt - Fatal编程技术网

C++ 如何在qt中使用image与纯c++ ;环境

C++ 如何在qt中使用image与纯c++ ;环境,c++,qt,C++,Qt,我正在编写一个没有QT IDE(在clion中)的GUI。我想在GUI中使用image(QICON)。我做了一些研究,QT官方网站告诉我“资源系统基于qmake、rcc(QT的资源编译器)和QFile之间的紧密合作。”我不想使用qmake、.qrc文件 我可以使用绝对路径或QIcon(QDir::currentPath())来实现这一点。但当我更改工作路径时,此方法无法正确工作(GUI中未显示图像) 因此,如何在没有qmake.qrc的情况下正确使用图像文件?鉴于您没有通过Qt资源系统分发有问题

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

我可以使用绝对路径或QIcon(QDir::currentPath())来实现这一点。但当我更改工作路径时,此方法无法正确工作(GUI中未显示图像)


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

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


在这种情况下,最有可能满足您的需要。

如果您不想处理Qt资源系统,您可以将图像转换为图像的文本表示形式,然后将其嵌入到源代码中。您可以使用大量在线转换器

例如,您可以在源代码中将转换后的图像存储为
静态字符*
数组,并在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的资源系统自动执行的功能。

有一些方法可以做到这一点,而不必像其他答案所说的那样使用Qt资源系统。不过,也有一种方法可以将Qt资源系统与CMake和CLion一起使用

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

您只需打开
AUTORCC
并将qrc文件添加到源中,例如:

set(AUTORCC ON)
...
add_target(my_target my_qrc_file.qrc ...)
然后,您可以正常访问资源系统中的内容(例如,图像的路径将是
:/my_image
)。

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

XPM是一个选项,但(对于较大的图像)也可以使用更紧凑的格式。我曾经在对的回答中使用了RGB C源图像转储的s选项。使用时,也可以使用任何受支持格式的转储。要从二进制文件生成源代码,一个简单的(自行编写的)工具可以帮助: