我有我需要逐行获取数据的文本文件。所以如果我的应用程序启动,它可以从文本文件中读取以显示信息。但我不想单独提供我的文本文件以及我的应用程序。有人能告诉我如何做到这一点吗? 以及我必须使用Qt来做到这一点!如何将文本文件包含到qt应用程序中?
我听说使用xml将是一个更好,更简单的方法来实现这一点。
btw谢谢你先进!
我有我需要逐行获取数据的文本文件。所以如果我的应用程序启动,它可以从文本文件中读取以显示信息。但我不想单独提供我的文本文件以及我的应用程序。有人能告诉我如何做到这一点吗? 以及我必须使用Qt来做到这一点!如何将文本文件包含到qt应用程序中?
我听说使用xml将是一个更好,更简单的方法来实现这一点。
btw谢谢你先进!
你有一个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发布的文档链接。
Qt Resource System是你在找什么。
继续ExplodingRat的答案。
方式是使用QFile那样不起作用(至少不会使用Qt 4.5),但你可以使用:
QResource r(":/file.xml");
QByteArray b(reinterpret_cast< const char* >(r.data()), r.size());
这样的代码在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();
你应该在哪里放置最初的XML?没有按钮来添加现有文件? – tarabyte 2014-06-08 16:06:17