2011-02-16 137 views
10

我有我需要逐行获取数据的文本文件。所以如果我的应用程序启动,它可以从文本文件中读取以显示信息。但我不想单独提供我的文本文件以及我的应用程序。有人能告诉我如何做到这一点吗? 以及我必须使用Qt来做到这一点!如何将文本文件包含到qt应用程序中?

我听说使用xml将是一个更好,更简单的方法来实现这一点。

btw谢谢你先进!

回答

14

你有一个qt的资源文件(.qrc)添加到您的项目

这可能是这样的:

<RCC> 
    <qresource prefix="/"> 
     <file>file.xml</file> 
     <file>files/file2.xml</file> 
    </qresource> 
</RCC> 

之后,你必须是资源文件添加到您的项目文件(的.pro)

喜欢本作例子:

RESOURCES += myqrcfile.qrc 

之后,你可以在代码中使用该文件使用字符“:”引用文件

也许是这样的:

QFile data(":/file.xml"); 
//or 
QFile data(":/files/file2.xml"); 
//etc... 

请记住,您定义的文件(在QRC)的路径也必须与文件在文件系统中的位置相对应。

希望这会有所帮助,更多信息我建议您阅读Gorkem Ercan发布的文档链接。

+0

你应该在哪里放置最初的XML?没有按钮来添加现有文件? – tarabyte 2014-06-08 16:06:17

7

Qt Resource System是你在找什么。

+0

你可以给我是一个例子或类似的东西使用这个QResource?我没有找到一个关于hwo使用这个东西的例子程序! :( – defiant 2011-02-16 14:40:36

+2

@oDx http://doc.qt.nokia.com/latest/mainwindows-application.html – graphite 2011-02-16 15:35:35

3

继续ExplodingRat的答案。

方式是使用QFile那样不起作用(至少不会使用Qt 4.5),但你可以使用:

QResource r(":/file.xml"); 
QByteArray b(reinterpret_cast< const char* >(r.data()), r.size()); 
4

这样的代码在Qt的5.2:

QResource common(":/phrases/Resources/Phrases/Common.xml"); 

QFile commonFile(common.absoluteFilePath()); 

if (!commonFile.open(QIODevice::ReadOnly | QIODevice::Text)) 
{ 
    qDebug() << "Unable to open file: " << commonFile.fileName() << " besause of error " << commonFile.errorString() << endl; 

    return; 
} 

QTextStream in(&commonFile); 

QString content = in.readAll(); 
相关问题