【问题标题】:C++ / Qt - Cannot Open .txt from qrc fileC++ / Qt - 无法从 qrc 文件打开 .txt
【发布时间】:2017-09-23 16:14:52
【问题描述】:

我尝试了很多东西,但没有奏效。

我正在使用 Qt 5.9.1,我想在 QFile 变量中打开一个 .txt 文件(位于 qrc 文件中),如下所示:

QFile file(":/txt/config");

我也试过用

QFile file("qrc:/txt/config"); 

这是 qrc 文件(摘要):

<qresource prefix="/txt">
    <file alias="config">resources/files/config.txt</file>
</qresource>

我的 .pro 确实有 INCLUDEPATH += .

我已经尝试过:

Build -> Clean all
Build -> Run qmake
Build -> Build all

它什么也没改变,每次启动时,我都有这个输出:

QIODevice::read (QFile, ":/txt/config"): device not open

.qrc 中的路径是正确的,当我浏览目录并像普通文本文件一样在编辑器中打开它时,QtCreator 会找到该文件

感谢您的帮助,对不起我的英语......(编辑功能不允许我在顶部添加大家好,所以我在这里说:))

【问题讨论】:

  • 如果文件名是config.txt,为什么要打开txt/config?这些显然是不同的文件名。
  • 因为我使用别名“config”。我还尝试打开 config.txt 和 /txt/resources/files/config.txt。没用
  • 我刚刚测试过,代码看起来不错。可能是 qmake 没有重新生成文件的问题。有时make clean 和/或qmake 没有帮助。尝试删除Makefile 和/或生成的qrc_yourAppName.cpp
  • 你在 qmake/project 文件中有RESOURCES += appName.qrc 或类似的东西吗?
  • 写入将不起作用,因为文件/资源​​内容已放入二进制/可执行文件(通过 qrc_appname.cpp 文件)。你不能编辑那个。如果你想编辑它,你需要一个普通文件,而不是资源

标签: c++ qt qfile qresource


【解决方案1】:

您无法打开资源文件进行写入,因为内容嵌入在应用程序二进制文件中。你必须打开它只读

QFile file(":/txt/config");
if(!file.open(QIODevice::ReadOnly)) {
    qDebug() << "error: " << file.errorString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多