Qt里的文件管理及标准对话框
2022/1/14 23:33:35
本文主要是介绍Qt里的文件管理及标准对话框,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、文件管理
1、目录操作
1.1、QDir与QFileInfo
1.2、判断文件夹是否存在
1.3、创建目录
1.4、获取常用目录
1.5、切换路径
1.6、遍历文件
1.7、文件过滤
2、文件操作
2.1、QFile
2.2、打开并写入文件
2.3、读取里面所有内容
2.4、QIOdevice类
二、标准对话框
1、标准输入对话框
2、标准字体对话框
3、标准颜色对话框
4、标准文件对话框
5、标准消息对话框
一、文件管理
1、目录操作
qt里的目录操作主要用到两个类:QDir,QFileInfo下面重点介绍这2个类
1.1、QDir与QFileInfo
QDir:
QDir 类具有存取目录结构和内容的能力,使用它可以操作目录、存取目录或文件信息、操作底层文件 系统,而且还可以存取 Qt 的资源文件。
判断目录是否存在可以使用 exists(),目录的属性可以使用 isReadable()、isAbsolute ()、 isRelative() 和 isRoot()来获取 。
目录下有很多条目,包括文件、目录和符号连接,
总的条目数可以使用 count()来统计。
entryList()返回目录下所有条目组成的字符串链表 。
文件可以使用 remove()函数删除,
删除目录用 rmdir() ,
改名用rename()。
一般使用Filters对目录下的文件进行过滤。
QFileInfo:
QFilelnfo 类提供了与系统无关的文件信息,包括文件的名称、在文件系统中的位置(路径)、文件的访问权限以及是否是一个目录或者符号链接等。QFilelnfo也可以获取文件的大小和最近一次修改/读取的时间,还可以获取 Qt 资源的相关信息。
QFilelnfo 指向的文件可以在 QFileinfo 对象构建时设置,或者以后使用 setFile()来设置。可以使用以 exists()来查看文件是否存在,使用 size()获取文件的大小。
1.2、判断文件夹是否存在
1 2 | QDir dir("D:/qtmode");//绝对路径,或者相对路径,相对路径是项目的构建目录开始的地方 qDebug()<<dir.exists();//不存在返回假存在返回真 |
1.3、创建目录
1 2 3 4 5 6 7 8 9 10 | QDir dir("D:/test"); if(!dir.exists()) { dir.mkdir("D:/test"); qDebug()<<"创建了新的文件夹"; } else { qDebug()<<"文件夹存在"; } |
1.4、获取常用目录
代码:
1 2 3 4 5 6 | QDir dir; qDebug()<<dir.current()<<endl; qDebug()<<dir.currentPath()<<endl; qDebug()<<dir.homePath()<<endl; qDebug()<<dir.tempPath()<<endl; qDebug()<<dir.rootPath(); |
演示效果:
1.5、切换路径
1 2 3 4 5 | QDir dir("D:/text"); qDebug()<<dir.dirName();//当前文件夹的名字 qDebug()<<dir.absolutePath();//当前文件夹的绝对路径 dir.cd("C:/");//切换到C盘下 qDebug()<<dir.absolutePath(); |
1.6、遍历文件
1 2 3 4 5 6 7 8 9 10 | QDir dir(dir.current()); foreach(QFileInfo item,dir.entryInfoList()) { if(item.isDir()) { qDebug()<<"文件夹:"<<item.filePath(); //fileName只有文件(夹)的名字 }else if(item.isFile()){ qDebug()<<"文件:"<<item.filePath(); } } |
效果展示:
1.7、文件过滤
1 2 3 4 5 | QDir dir(dir.current()); QStringList listters; listters<<"*.txt"<<"*.exe";//<-这里就是筛选条件具体根据项目的类型而定 dir.setNameFilters(listters); qDebug()<<dir.entryList(listters,QDir::Files); |
2、文件操作
2.1、QFile
QFile 类提供了 一个用于读/写文件的接口,它可以用来读/写文本文件、二进制文件和 Qt 资源的 I/0 设备。
一般在构建 QFile 对象时便指定文件名,当然也可以使用 setFileName ()进行设置。可以使用 exists() 来检查文件是否存在使用 remove()来删除一个文件 。
一个文件可以操作如下:
1 2 3 4 5 6 7 8 | open() 打开 close()关闭 flush()刷新 文件的读写可以使用 read()、 readLine()、 readAll()和 write () size()函数来获取文件的大小 seek()来定位到文件的任意位置 pos()来获取当前的位置 atEnd()来判断是否到达了文件的末尾 |
还是可以用以下学过FILE,fstream这些来进行文件操作。
2.2、打开并写入文件
文件操作流程 打开>写入/读取>关闭
访问一个设备以前,需要使用 open ()函数打开该设备,而且必须指定正确的打开模式,不同的打开模 式之间可以使用“|”符号同时使用。
打开设备后可以使用 write()或者 putChar()来进行写人,可以使用seek函数进行文件指针移动(如果 有),使用read()、 readLine()或者 readAll()进行读取,最后使用 close()关闭设备。
演示:
1 2 3 4 5 6 7 8 9 10 11 | QFile file("演示.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) //文件不存在会创建文件 { qDebug() << file.errorString(); } else { qDebug() << "打开成功!"; } file.write("阿巴阿巴阿巴"); file.close(); |
2.3、读取里面所有内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | QFile file("演示.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) //文件不存在会创建文件 { qDebug() << file.errorString(); } else { qDebug() << "打开成功!"; } while(!file.atEnd()) { QByteArray line=file.readLine(); qDebug()<<line; } file.close(); |
2.4、QIOdevice类
QIODevice 类是 Qt 所有 I/O 设备的基础类 ,为QFIle等类提供一个抽象接口
继承图如下:
二、标准对话框
1、标准输入对话框
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include < QInputDialog > bool ok; 有以下几种: //以spinxbox形式展现的数字 int i= QInputDialog::getInt(this,"提示"," 获取数字", 15,//默认值 0,//最小值 100,//最大值 1,//步长 &ok);//用来确定是否点了ok //以spinxbox形式展现的数字(小数) int i= QInputDialog::getDouble(this,"提示"," 获取数字", 15.34,//默认值 0,//最小值 100,//最大值 3,//显示小数点后几位 &ok);//用来确定是否点了ok QStringList items; //显示QStringList中的字符串 items<<"字符串1"<<"字符串2"<<"字符串3"<<"字符串4"<<"字符串5"; bool ok; QString item=QInputDialog::getItem(this,"提示","获取字符串", items,//QStringList类型 0,//默认选中 true,//内容是否可更改 &ok); //获取输入的字符串,一行 QString text=QInputDialog::getText(this,"提示","输入字符串", QLineEdit::Normal,"默认显示内容",&ok); //获取输入的字符串,多行 QString text=QInputDialog::getMultiLineText(this,"提示","输入多行字符串","默认显示内容",&ok); |
2、标准字体对话框
1 2 3 4 5 6 7 8 9 10 | #include < QColorDialog > QColor color=QColorDialog::getColor(Qt::red,//默认选择颜色 this,"获取颜色"); if(color.isValid()) { ui->lineEdit_4->setText(color.name()); QPalette pa=ui->lineEdit_4->palette(); //获取lineEdit的palette pa.setColor(QPalette::Base,color); //设置成获取的颜色 ui->lineEdit_4->setPalette(pa); //重写设置回去 } |
3、标准颜色对话框
1 2 3 4 5 6 7 8 9 10 | #include < QFontDialog > bool ok; QFont font=QFontDialog::getFont(&ok, QFont("黑体")//默认字体 ,this,"选择字体"); if(ok) { ui->lineEdit_5->setText(font.key());//字体名字 ui->lineEdit_5->setFont(font); //设置字体 } |
4、标准文件对话框
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include < QFileDialog > QString path=QFileDialog::getExistingDirectory(this,"选择文件", "D:\\");//起始路径 //只选择单个文件 QString fileName=QFileDialog::getOpenFileName(this,"选择文件","D:\\",//起始路径 "All Files (*);;Text Files(*.txt)");//筛选条件 //打开多个文件的路径 QStringList fileName=QFileDialog::getOpenFileNames(this,"选择文件","D:\\", "All Files (*);;Text Files (*.txt)"); //保存文件用的,但是不会创建文件,需要自己通过文件操作创建文件,写入内容 QString fileName=QFileDialog::getSaveFileName(this,"保存文件","D:\\", "All Files (*);;Text Files (*.txt)"); |
5、标准消息对话框
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | QMessageBox::information(this," 标题","文本"); QMessageBox::warning(this,"标题","文本"); QMessageBox::critical(this,"标题","文本"); QMessageBox::question(this,"标题","文本"); 返回值是选中的按钮,对于第4,5,6个参事指明的按钮,当然有默认的,可以不填,注意第一个父类的,这 里的父类得要是一个窗口对象,而且不能在窗口处理完前死亡,按钮可以是以下按钮 QMessageBox::NoButton QMessageBox::Ok QMessageBox::Cancel QMessageBox::Yes QMessageBox::No QMessageBox::Abort QMessageBox::Retry QMessageBox::Ignore QMessageBox::YesAll QMessageBox::NoAll |
这篇关于Qt里的文件管理及标准对话框的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀
- 2025-01-092024全球互联网流量分析报告
- 2025-01-09如何提升学校行政管理中的进度追踪效率?4个实用策略和3款工具推荐