我最近一直在尝试使用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,但一切都保持不变。我该如何解决?非常感谢。
答案 0 :(得分:0)
根据docs:
Qt资源系统是一种独立于平台的存储机制 应用程序可执行文件中的二进制文件。这对你有用 应用程序总是需要一组特定的文件(图标,翻译 文件等)并且您不希望冒丢失文件的风险。
由于它是资源的一部分,文件是只读,因此如果您使用写入权限打开它,它将始终返回false。
简而言之,存储在.qrc中的文件是静态的。