QT资源文件-QFile Write/WriteOnly/ReadWrite打开失败说明

简介: 在使用QT进行开发过程中,常常会使用qrc(资源文件),比如一些配置文件,图片,图标(icon)等,但是一些没有经验的小伙伴会想着将配置文件的数据进行修改,发现无法以代码的方式对资源文件进行修改。

前言

在使用QT进行开发过程中,常常会使用qrc(资源文件),比如一些配置文件,图片,图标(icon)等,但是一些没有经验的小伙伴会想着将配置文件的数据进行修改,发现无法以代码的方式对资源文件进行修改。

代码说明

#include <QCoreApplication>
#include <QtDebug>
#include <QFile>
#include <QIODevice>
int main(int argc, char *argv[])
{
    QFile file(":/config/1.xml");//1.xml是资源文件目录config下的文件
    qDebug() << "file_exist:" << file.exists(); //假如资源文件存在,返回 true
     bool b_open = file.open(QIODevice::WriteOnly);//返回false
    b_open = file.open(QIODevice::ReadOnly);// 返回true
}

结论

QT中,使用QFile能够读取资源文件,但是不能以写的方式打开文件,因为资源文件(路径以“:”和普通文件区别)一般都是作为只读的形式存在,如果想操作资源文件,那么路径就不要以":"开头,这样QT就会将该文件当做普通文件,就可以对该文件进行读写操作了。


相关文章
|
2月前
|
编译器 API 数据安全/隐私保护
深入对比:Qt 的 QFile/QFileInfo 和与 C++17 Filesystem 和标准文件流 的细节剖析
深入对比:Qt 的 QFile/QFileInfo 和与 C++17 Filesystem 和标准文件流 的细节剖析
184 3
|
19天前
Qt使用资源文件QtResource
Qt使用资源文件QtResource
14 5
|
1月前
Qt 添加资源文件
Qt 添加资源文件
Qt 读写文件(QFile&QTextStream&QDataStream) 详解
Qt 读写文件(QFile&QTextStream&QDataStream) 详解
Qt 读写文件(QFile&QTextStream&QDataStream) 详解
|
2月前
|
开发框架 前端开发 算法
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
101 0
|
2月前
Qt6学习笔记四(ui使用、资源文件添加)
Qt6学习笔记四(ui使用、资源文件添加)
121 0
|
固态存储 测试技术 Linux
文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具
在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出,linux则能看到打印输出)。   本篇开发了测试工具,并且测试了QFile在USB3.0和M.2SSD上的写入性能。
文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具
|
存储
Qt 5——添加资源文件方法步骤(图解)
Qt 5——添加资源文件方法步骤(图解)
863 0
Qt 5——添加资源文件方法步骤(图解)
|
编解码 Windows
案例分享:Qt出版社书籍配套U盘资源播放器软件定制(脚本关联播放器与资源文件,播放器,兼容win7,win10和mac)
案例分享:Qt出版社书籍配套U盘资源播放器软件定制(脚本关联播放器与资源文件,播放器,兼容win7,win10和mac)
案例分享:Qt出版社书籍配套U盘资源播放器软件定制(脚本关联播放器与资源文件,播放器,兼容win7,win10和mac)
|
编译器 计算机视觉
关于 Qt编译时使用msvc编译器报错“Error: cannot open ...main.obj.10836.32.jom for write” 的解决方法
关于 Qt编译时使用msvc编译器报错“Error: cannot open ...main.obj.10836.32.jom for write” 的解决方法
关于 Qt编译时使用msvc编译器报错“Error: cannot open ...main.obj.10836.32.jom for write” 的解决方法