我有我需要逐行獲取數據的文本文件。所以如果我的應用程序啓動,它可以從文本文件中讀取以顯示信息。但我不想單獨提供我的文本文件以及我的應用程序。有人能告訴我如何做到這一點嗎? 以及我必須使用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