2017-09-02 89 views
0

我一直在嘗試使用Qt最近構建一款紙牌遊戲,但我遇到了一個非常奇怪的bug。QIODevice :: write:設備未打開

QFile file(":/file/02"); 
file.open(QIODevice::ReadWrite|QIODevice::Truncate); 

第二行的返回值爲false。所以當我嘗試讀取或寫入文件時,會拋出此異常。 然而,該文件確實存在,並在項目中的QRC文件這樣寫的:

<qresource prefix="/file"> 
<file alias="01">data.json</file> 
<file alias="02">deck.json</file> 

我也加入這個QRC文件後運行qmake的,但一切都保持不變。我該如何解決它?非常感謝。

回答

0

按照docs

Qt的資源系統是用於存儲應用程序的可執行 二進制文件獨立於平臺的機制。如果您的應用程序始終需要一組特定的文件(圖標,翻譯文件等等),並且您不想冒丟失文件的風險,這將非常有用。

,因爲它是資源的一部分,這些文件只有,所以如果你有寫權限打開它,它總是會返回false。

簡而言之,存儲在.qrc中的文件是靜態的。

+0

總是有未讀文檔解釋問題......謝謝:) – AerysNan