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

相关推荐
甄同学11 小时前
第二十篇:MCP协议集成,Claude Code如何扩展AI Agent的能力边界
开发语言·人工智能·qt
Liknana12 小时前
Qt 圆角表格控件实战:setMask + 抗锯齿描边 + 多层阴影
qt·ui
Scott9999HH14 小时前
2026 避坑实录:国产品牌压力变送器什么牌子好?从硬件抗扰到 C++ Qt 实时曲线绘制源码剖析
开发语言·c++·qt
皓悦编程记1 天前
【YOLO26 系列】基于YOLO26的垃圾分类检测系统【python源码+Pyqt5界面/WEB+数据集+训练代码】
python·qt·分类
十五年专注C++开发2 天前
qobject_cast转换失败原因分析
c++·qt·dynamic_cast·qobject_cast
sycmancia2 天前
Qt——线程的生命期问题
开发语言·qt
闻道且行之2 天前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
气概3 天前
QT集成basler相机
开发语言·数码相机·qt
GIS阵地3 天前
QgsRasterDataProvider 完整详解(QGIS 3.40.13 C++)
开发语言·c++·qt·开源软件·qgis
sycmancia3 天前
Qt——多线程中的信号与槽(二)
jvm·qt