QIODevice :: write:设备未打开
问题描述:
我一直在尝试使用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的,但一切都保持不变。我该如何解决它?非常感谢。
答
按照docs:
Qt的资源系统是用于存储应用程序的可执行 二进制文件独立于平台的机制。如果您的应用程序始终需要一组特定的文件(图标,翻译文件等等),并且您不想冒丢失文件的风险,这将非常有用。
,因为它是资源的一部分,这些文件只有读,所以如果你有写权限打开它,它总是会返回false。
简而言之,存储在.qrc中的文件是静态的。
总是有未读文档解释问题......谢谢:) – AerysNan