QIODevice :: write:设备未打开

时间:2017-09-02 07:39:42

标签: c++ qt exception qt-creator

我最近一直在尝试使用Qt制作纸牌游戏,但我遇到了一个非常奇怪的错误。

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,但一切都保持不变。我该如何解决?非常感谢。

1 个答案:

答案 0 :(得分:0)

根据docs

  

Qt资源系统是一种独立于平台的存储机制   应用程序可执行文件中的二进制文件。这对你有用   应用程序总是需要一组特定的文件(图标,翻译   文件等)并且您不希望冒丢失文件的风险。

由于它是资源的一部分,文件是只读,因此如果您使用写入权限打开它,它将始终返回false。

简而言之,存储在.qrc中的文件是静态的。