QIODevice::write : 设备未打开
Posted
技术标签:
【中文标题】QIODevice::write : 设备未打开【英文标题】:QIODevice::write : device not open 【发布时间】:2017-09-02 07:39:42 【问题描述】:我最近一直在尝试使用 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】:根据docs:
Qt资源系统是一种独立于平台的存储机制 应用程序的可执行文件中的二进制文件。如果您的 应用程序总是需要一组特定的文件(图标、翻译 文件等),并且您不想冒丢失文件的风险。
因为它是资源的一部分,所以文件是只读的,所以如果你用写权限打开它,它总是会返回 false。
简而言之,存储在 .qrc 中的文件是静态的。
【讨论】:
总是有未读的文档可以解释问题...谢谢 :)以上是关于QIODevice::write : 设备未打开的主要内容,如果未能解决你的问题,请参考以下文章
文件打开时出现“QIODevice::write: device not open”
Linux C++ Qt 修复“QIODevice::write:ReadOnly device”?