2011-02-16 185 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(); 
相關問題