如何将文本文件包含到qt应用程序中?

时间:2011-02-16 13:05:50

标签: xml qt file

我有文本文件,我需要逐行获取数据。因此,如果我的应用程序启动,它可以从文本文件中读取以显示信息。但我不想单独提供我的文本文件和我的应用程序。这该怎么做? 好吧,我必须使用Qt做到这一点!

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

4 个答案:

答案 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() );