QT文件操作

时间记录:2024/1/10

文件读写的一些注意点,读文件时文件名可以是相对路径,但是向文件写内容时文件名需要是绝对路径

1.文件对话框

QFileDialog

静态方法getOpenFileName弹出文件选择框,选择要打开的文件,返回打开文件的路径+文件名

2.文件操作

QFile类

常用属性:

(1)setFileName:设置要打开的文件路径+文件名

(2)open:打开文件,传入参数,打开方式只读、只写、读写、追加

(3)readxxx:读取文件内容,返回QByteArray二进制内容

(4)write:向文件中写入内容

(5)close:关闭文件并保存

3.中文编码问题解决

QTextStream/QTextCodec类

(1)QTextStream的setCodec方法指定编码

(2)QTextCodec类的静态方法codecForName来指定编码,toUnicode方法将QByteArray数据以指定编码转为QString数据

(3)写入时使用flush方法将缓存中的数据刷新进文件保存

4.文件夹操作

QDir类

常用属性

(1)setPath设置文件夹路径

(2)exists方法判断路径是否物理存在

(3)mkdir方法创建文件夹

5.设置当前项目路径为应用程序路径

cpp 复制代码
QDir::setCurrent(QApplication::applicationDirPath());

6.获取随机数

(1)原始方法,qsrand和qrand方法结合获取

cpp 复制代码
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
int randNum = qrand()%9;//生成0-9之间的随机数

(2)QRandomGenerator类

cpp 复制代码
QRandomGenerator::global()->bounded(10);

7.获取当前时间字符串

QDateTime/QDate/Qtime

常用属性

(1)静态方法currentDateTime获取当前日期时间

(2)toString方法将类格式化为字符串"yyyy/MM/dd HH:mm:ss"

8.读写ini配置文件

QSettings类

8.1 ini文件格式介绍

键=值

8.2 读写示例:

cpp 复制代码
    conf = new QSettings("./conf.ini",QSettings::IniFormat,this);//创建对象

    conf->beginGroup("SQL");//设置组
    conf->setValue("username","admin");//写内容
    conf->setValue("password","123456");
    conf->endGroup();

    conf->setValue("QT/username","123");//直接向组写内容
    conf->setValue("QT/password","123");

    qDebug() << conf->value("QT/username").toString();//获取值

    conf->beginGroup("SQL");
    qDebug() << conf->value("username").toString();
    conf->endGroup();

    conf->sync();//同步数据到ini文件

8.3 结果

9.QString字符串转QByteArray方法的介绍

(1)toUtf8:以UTF-8编码格式转换汉字

(2)toLatin1:以ASCII编码转换汉字

(3)toLocal8Bit:以本地计算机操作系统的编码格式转换汉字,一般为GBK

相关推荐
我是小灰灰吖10 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
C++ 老炮儿的技术栈13 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
我是小灰灰吖15 小时前
Ubuntu 22.04 + Qt 6.9.3 应用程序打包与部署完整指南
qt·ubuntu
qq_4017004117 小时前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
郝学胜-神的一滴19 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
AI的探索之旅19 小时前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
我是小灰灰吖20 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
≮傷£≯√2 天前
Opencv VideoCapture
qt·opencv
雨田言炎2 天前
十、QThread多线程
linux·服务器·开发语言·前端·qt
常乐か3 天前
在 Ubuntu 24.04 中编译 Qt 5.15.2 项目完全指南
linux·qt·ubuntu