2013-04-27 15 views
8

Mam poniższy kod. Używam Qt_5_0_2_MSVC2012_64bit-Release. Nie mogę odczytać pliku. Pojawia się komunikat błędu debugowania "Nie można otworzyć pliku do odczytu". Mam pewien problem z plikami zasobów. Masz pomysł, jak to naprawić? Dzięki!Odczytywanie i zapisywanie do pliku w systemie zasobów Qt (qt 5.0.2)

#include <QCoreApplication> 
#include <QFile> 
#include <QString> 
#include <QDebug> 
#include <QTextStream> 
#include <QResource> 
#include <QIODevice> 


void Read(QString Filename){ 
    QFile mFile(Filename); 

    if(!mFile.open(QFile::ReadOnly | QFile::Text)){ 
     qDebug() << "could not open file for read"; 
     return; 
    } 

     QTextStream in(&mFile); 
     QString mText = in.readAll(); 

     qDebug() << mText; 

     mFile.close(); 



} 
int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    Read(":/MyFiles/myfile.txt"); 
    return a.exec(); 
} 
+2

1) Dodaj mFile.errorString() do debugowania, aby dowiedzieć się więcej o dokładnej przyczyny 2) dodać zawartość pliku QRC –

+0

Należy pamiętać, że zasoby Qt można odczytać, ale nie zapisać po ich skompilowaniu. –

Odpowiedz

2

test.pro:

TEMPLATE = app 
TARGET = test 
INCLUDEPATH += . 

# Input 
SOURCES += main.cpp 
RESOURCES += test.qrc 

test.qrc:

<!DOCTYPE RCC><RCC version="1.0"> 
<qresource> 
    <file>MyFiles/myfile.txt</file> 
</qresource> 
</RCC> 

main.cpp jest z Twoim pytaniem. Działa w porządku.

To powiedziawszy, jeśli nadal masz problem, powinieneś opublikować minimalny projekt Qt (w tym pliki .pro i .qrc), który ma błąd.

3

Miałem ten sam problem. Łańcuch błędu był "Nieznany błąd".
Roztwór dodać INCLUDEPATH += . z odpowiedzią @ Gatto i wykonywać polecenia z menu:

1. Build -> Clean all 
2. Build -> Run qmake 
3. Build -> Rebuild All 
Powiązane problemy