[SOLVED]can't open file from qresources
-
Hi.
I can't open a file that I added to my .qrc file.
here is my .qrc file :
<RCC>
<qresource prefix="/plane">
<file>j3pipercub.obj</file>
</qresource>
</RCC>and this is how I call this file :
mesh = load_object(":/plane/j3pipercub.obj"); -
Hi,
did you add the resouce file to your project file? -
yes this is how I did that :
RESOURCES = mresources.qrc -
Any errors or warnings when building the project?
-
No, It just not load that .obj file.
I can load it by address in my pc but can't load it from resources. -
Did you try removing the build directory and doing a complete rebuild?
-
No, I try it now.
-
Did it.
Still doesn't work! -
Can you give me a copy of that file so I can try it?
-
sure, how can I do that?
-
The file works for me. Please try this in your
load_object()
function:QFile file(":/plane/j3pipercub.obj"); if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) { qDebug() << "file read error"; return; } const QByteArray ba = file.readAll(); file.close(); const QString s( ba ); qDebug() << s;
-
Ok, let's see if we can copy the file's content to another file:
QFile file(":/plane/j3pipercub.obj"); if (!file.open(QIODevice::ReadOnly|QIODevice::Text)) { qDebug() << "file read error"; return; } const QByteArray ba = file.readAll(); file.close(); QFile file2("/home/pw/piper.obj"); // +++++ ADJUST PATH ++++++ if (!file2.open(QIODevice::WriteOnly)) { qDebug() << "file write error"; return; } qDebug() << file2.write(ba); file2.close();
-
HI,
have you used
Q_INIT_RESOURCE
to initialize the resource?? -
No! where should I initialize it?
-
Hi,
in the
main()
; something likeint main (int argc, char *argv[]) { QApplication app(argc, argv); Q_INIT_RESOURCE(mresources); ..... }
-
-
dear @mcosta it's not helped
-
@Wieland
Q_INIT_RESOURCE
is needed if the resource is not embedded in the application or on some platformNormally, when resources are built as part of the application, the resources are loaded automatically at startup. The Q_INIT_RESOURCE() macro is necessary on some platforms for resources stored in a static library.
-
@mcosta Things are a bit strange here. Reading from the resource works. In the code I posted above there is the bytearray ba and it has the correct size, but it contains only null bytes. But only on Hamed's computer! Works on mine. I don't get it.
-
hi,
so you could try to use an alias
<RCC> <qresource prefix="/plane"> <file alias="j3pipercub.obj">j3pipercub.obj</file> </qresource> </RCC>