qt初入门2:qt选择一个文件或者目录,获取当前目录,操作文件目录等整理

最近用qt操作文件或者目录的动作比较多,简单整理一下常用的接口,方便回顾。

总的来说,其实就是用文件选择对话框QFileDialog类,以及操作文件信息的QFileInfo类,以及相关QCoreApplication中静态成员函数获取一些信息,qDir类。

1:获取当前目录,一般默认也是当前目录。

C++ 复制代码
void Dialog::on_pbn_getcurdir_clicked()
{
    QString cur_string = QApplication::applicationDirPath(); //可执行文件的目录路径
    QString cur_string1 = QApplication::applicationFilePath(); //可执行文件的路径
    QString cur_dir = QDir::currentPath(); //获取当前工作目录路径  其他获取主目录,临时目录,磁盘列表,求绝对路径

    ui->le_display->append("cur_string:"+cur_string);
    ui->le_display->append("cur_string1:"+cur_string1);
    ui->le_display->append("cur_dir:"+cur_dir);
}

2:可以设置一个目录,下次打开默认基于该目录。

或者保存最后一次用户打开的目录,做使用。

C++ 复制代码
//在打开文件或者目录时  一般可以设置默认打开的目录 这里要借助全局或者成员变量
static QString default_dir = QDir::currentPath();
void Dialog::on_pbn_setdefdir_clicked()
{
    //打开一个目录 父对象指针  标题栏  初始目录
    //DontResolveSymlinks:不解析符号链接,而是直接显示链接的路径。
    //ShowDirsOnly:仅显示目录,过滤掉文件。
    //ReadOnly:只读模式,在对话框中禁止创建新目录。
    default_dir = QFileDialog::getExistingDirectory(this, "选择默认目录",default_dir, QFileDialog::ShowDirsOnly);
    ui->le_display->append("设置默认打开目录为:"+default_dir+",需要存储信息,后面再次使用。");
}

3:选择文件和目录,基于上面设置的默认目录。

C++ 复制代码
void Dialog::on_pbn_file_clicked()
{
    //打开一个文件,借助QFileDialog,目录可以用上面设置的,方便操作
    //父对象 标题栏  初始目录 过滤文件类型
    m_file_name = QFileDialog::getOpenFileName(this, "选择一个文件", default_dir, "Text Files (*.txt);;All Files (*)");
    ui->le_file_name->setText(m_file_name);
    ui->le_display->append("选择一个文件:"+m_file_name);
}

void Dialog::on_pbn_dir_clicked()
{
    m_dir_name = QFileDialog::getExistingDirectory(this, "选择一个目录",default_dir, QFileDialog::ShowDirsOnly);
    ui->le_dir_name->setText(m_dir_name);
    ui->le_display->append("选择一个目录:"+m_dir_name);
}

4:选择一个文件后获取是字符串,获取文件路径目录。

C++ 复制代码
//这里主要借助QFileInfo 类和qDir类
void Dialog::on_pbn_getfile_dir_clicked() //获取已经选择文件的路径
{
    QFileInfo fileinfo(m_file_name); //也可以是一个目录
    QString reall_filedir = fileinfo.dir().absolutePath(); //获取绝对路径
    QString reall_filename = fileinfo.fileName();
    ui->le_display->append("选择文件的目录为:" + reall_filedir);
}

5:选择一个文件后,获取真实文件名等其他方法

c++ 复制代码
#include <QDateTime>
void Dialog::on_pbn_getfile_name_clicked() //获取已经选择文件的实际文件名
{
    QFileInfo fileinfo(m_file_name); //相关文件的操作都是借助于QFileInfo 可以探索其他
    QString reall_filename = fileinfo.fileName();
    ui->le_display->append("选择文件的文件名为:" + reall_filename);
    ui->le_display->append("选择文件的路径为:"+fileinfo.filePath());
    ui->le_display->append("选择文件的绝对路径为:"+fileinfo.absoluteFilePath());
    ui->le_display->append("选择文件的最后修改时间:"+fileinfo.lastModified().toString());
}

6:要生成目标文件,基于选择的文件,做文件名处理。

这里文件的拷贝,重命名等都只是接口

C++ 复制代码
void Dialog::on_pbn_file_add_suffix_clicked()
{
    QFileInfo fileinfo(m_file_name);
    //需要对目录进行处理 比如要生成一个目标文件在源文件基础上加个后缀
    QString dst_filename = fileinfo.dir().absolutePath()+"/"+fileinfo.baseName()+"_后缀"+"."+fileinfo.suffix();
    ui->le_display->append("处理后目标文件为:"+dst_filename);

    //如果要遍历一个目录 可以用QDir类 entryList
}

7:简单运行:

相关推荐
架构师伯子明9 小时前
QT+OpenGL(3):FBO离屏渲染
开发语言·qt
mengzhi啊12 小时前
把数据存入sql数据库。qt,c++。
数据库·sql·qt
mengzhi啊18 小时前
SerialPortItem对串口再封装一层,省去一些常用的步骤,不用每次都去写类
qt
用户8334423966141 天前
从批量操作到任务中心,再到现场工作台:DeviceForge v2.10—v2.12 完整演进
qt
宛 禾1 天前
Qt 控件入门:QLabel 从拖拽到对象树,一篇讲透
c++·qt·学习
打工仔折腾 AI2 天前
Qt网络编程实战:UDP、TCP到HTTP的落地经验与选型
网络·人工智能·后端·python·qt·udp·ai agent 实战
Lhan.zzZ2 天前
Linux + Qt/QML:解决 QtQuick.VirtualKeyboard.Plugins 模块加载失败与环境变量配置
linux·数据库·qt
誰能久伴不乏2 天前
QT工业上位机一次「指令静默丢失」的排查
qt·docker·github
扶尔魔ocy2 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
橙橙笔记2 天前
QT安卓软件的制作
android·git·qt·软件