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

相关推荐
Quz2 小时前
QML Loader:从文件加载组件、加载内联组件
qt
Quz2 小时前
QML Loader: 状态监听与动态标签页
qt
似水এ᭄往昔2 小时前
【Qt】--常用控件(显示类控件)
开发语言·qt
慧都小项6 小时前
从 Figma 到 Qt:Qtitan 能减少哪些界面还原工作?
前端·qt·嵌入式·figma·图形界面·工业界面·qtitan
用户122003879007 小时前
Qt学习之绘图入门练习
qt
西西弗Sisyphus10 小时前
Qt 实现一个 Windows 启动项查看器
开发语言·windows·qt
郝学胜-神的一滴1 天前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
爱吃巧克力的程序媛1 天前
main.cpp注册 C++ 类到 QML 元对象系统
c++·qt
励志不掉头发的内向程序员1 天前
【LibreCAD 2D架构】从鼠标点击到图形创建:RS_ActionDrawLine交互流程与状态机解析
开发语言·c++·qt·学习·系统架构·计算机外设·交互
尘中远1 天前
给C++工业软件搭建 Agent
开发语言·c++·qt·ai·agent