2017-09-02 410 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