2013-04-27 634 views
8

我有下面的代码。我正在使用Qt_5_0_2_MSVC2012_64bit-Release。我无法读取文件。我收到“无法打开文件进行读取”的调试错误消息。资源文件对我来说存在一些问题。任何想法如何解决它?谢谢!在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)添加mFile.errorString()到您的调试输出更多地了解确切的原因2)添加QRC文件的内容 – 2013-04-27 14:31:41

+0

请注意,Qt资源一旦编译就可以读取但不能写入。 – 2015-02-24 18:57:42

回答

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是从你的问题。工作正常。这就是说,如果你仍然有问题,你应该发布最小的Qt项目(包括.pro和.qrc文件),这有错误。

3

我有同样的问题。错误字符串是“未知错误”。
的解决方案是从@加托的答案添加INCLUDEPATH += .,从菜单中运行命令:

1. Build -> Clean all 
2. Build -> Run qmake 
3. Build -> Rebuild All