Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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++ 从资源中读取图像时,QImage为空_C++_Qt_Opengl_Qimage_Qtgui - Fatal编程技术网

C++ 从资源中读取图像时,QImage为空

C++ 从资源中读取图像时,QImage为空,c++,qt,opengl,qimage,qtgui,C++,Qt,Opengl,Qimage,Qtgui,我正在为一个大学项目开发一个简单的fps射击游戏。我使用C++、QT和OpenGL,在纹理加载时遇到问题。我把我的纹理放到资源文件中。加载后,存储纹理的QImage对象为空。 这是我的资源文件: <RCC> <qresource prefix="/sounds"> <file alias="rifle">rifle.wav</file> </qresource> <qresource pre

我正在为一个大学项目开发一个简单的fps射击游戏。我使用C++、QT和OpenGL,在纹理加载时遇到问题。我把我的纹理放到资源文件中。加载后,存储纹理的QImage对象为空。 这是我的资源文件:

<RCC>
    <qresource prefix="/sounds">
        <file alias="rifle">rifle.wav</file>
    </qresource>
    <qresource prefix="/textures">
        <file alias="ground">ground00.tga</file>
        <file alias="sky_back">sky_back.tga</file>
        <file alias="sky_front">sky_front.tga</file>
        <file alias="sky_left">sky_left.tga</file>
        <file alias="sky_right">sky_right.tga</file>
        <file alias="sky_up">sky_up.tga</file>
        <file alias="wall05">wall05.tga</file>
        <file alias="wall06">wall06.tga</file>
        <file alias="wall07">wall07.tga</file>
        <file alias="wall08">wall08.tga</file>
        <file alias="wall09">wall09.tga</file>
    </qresource>
</RCC>
但是,两个调用都失败。QImageReader支持tga文件,“tga”在

qDebug() << QImageReader::supportedImageFormats ();

对于使用资源别名
加载纹理(“纹理/地面”,0)的情况它返回true

我在这里陈述显而易见的事实。。。但如果QImage isNull()返回true,则必须表明“:/textures/ground00.tga”不是指向对象的有效路径,或者资源无效。是否安装了tga图像格式插件?不管SupporteImage Formats()调用如何,您都可以检查它吗?@LaszloPapp:我如何检查它?/usr/lib/qt/plugins/imageformats/在我的Archlinux上。tga插件来自qtimageformats模块。请检查您的Qt安装。查找插件文件夹。如果没有,则需要使用QLibrary显式加载插件。你做到了吗?
load_texture(":/textures/ground00.tga",0);//using filename
load_texture(":/textures/ground",0);//using alias
qDebug() << QImageReader::supportedImageFormats ();
if(QFile::exists(file))
{
    std::cout<<"File "<<file.toStdString()<<" exists"<<std::endl;
}