我有文本文件,我需要逐行获取数据。因此,如果我的应用程序启动,它可以从文本文件中读取以显示信息。但我不想单独提供我的文本文件和我的应用程序。这该怎么做? 好吧,我必须使用Qt做到这一点!
我听说使用xml将是一种更好,更简单的方法来实现这一目标。
答案 0 :(得分:16)
您必须将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发布的文档链接。
答案 1 :(得分:8)
Qt Resource System正是您要找的。
答案 2 :(得分: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();
答案 3 :(得分:3)
继续关于ExplodingRat的回答。
像这样使用QFile不起作用(至少不在Qt 4.5中),但你可以使用:
QResource r( ":/file.xml" );
QByteArray b( reinterpret_cast< const char* >( r.data() ), r.size() );