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

news2024/9/23 15:25:24

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

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

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

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:可以设置一个目录,下次打开默认基于该目录。

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

//在打开文件或者目录时  一般可以设置默认打开的目录 这里要借助全局或者成员变量
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:选择文件和目录,基于上面设置的默认目录。

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:选择一个文件后获取是字符串,获取文件路径目录。

//这里主要借助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:选择一个文件后,获取真实文件名等其他方法

#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:要生成目标文件,基于选择的文件,做文件名处理。

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

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:简单运行:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js(JavaScript)数据结构之数组(Array)

什么是数据结构&#xff1f; 下面是维基百科的解释&#xff1a; 数据结构是计算机存储、组织数据的方式。数据结构意味着接口或封装&#xff1a;一个数据结构可被视为两个函数之间的接口&#xff0c;或者是由数据类型联合组成的存储内容的访问方法封装。 我们每天的编码中都会…

有关“修改地址”的回复话术大全

类型一:不能改地址 1.亲非常抱歉 这边发货后客服就没法帮您操作修改地址了 2.非常遗憾&#xff0c;订单一旦下单完成 地址是无法进行修改的。如果您这边需要修改地址的话也是可以尝试去和这个物流方进行协商的哦&#xff0c;这边没有修改的按钮没法操作的 3.抱歉呢亲亲。修改…

CentOS服务器之间免密登录和传输文件

使用过 Jenkins 的同学都知道&#xff0c;Jenkins 会在远程服务器上执行一些命令&#xff0c;如&#xff1a;cd /home/wwwroot/ && git pull&#xff0c;这时候就需要在 Jenkins 服务器上配置免密登录&#xff0c;以及在远程服务器上配置免密登录&#xff0c;这样才能实…

vue 自定义网页图标 favicon.ico 和 网页标题

效果预览 1. 添加配置 vue.config.js 在 module.exports { 内添加 // 自定义网页图标pwa: {iconPaths: {favicon32: "./favicon.ico",favicon16: "./favicon.ico",appleTouchIcon: "./favicon.ico",maskIcon: "./favicon.ico",msTil…

为什么选择嬴图?

图数据库、图计算、图中台都是用图论的方式去构造实体间的关联关系&#xff0c;实体用顶点来表达&#xff0c;而实体间的关系用边来表达。图数据库的这种简洁、自由、高维但100%还原世界的数据建模的方式让实体间的关联关系的计算比SQL类的数据库高效成千上万倍。 图&#xff1…

互联网外包公司干了2个月,技术退步明显了.......

先说一下自己的情况&#xff0c;本科毕业&#xff0c;18年通过校招进入南京某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

cosmos及特定应用程序的区块链

特定应用程序的区块链,简单来说&#xff0c;一个区块链就是一个专门的应用程序。为了实现某一特定的去中心化应用而专门实现一个区块链。 传统的用智能合约构建去中心化应用不行吗&#xff1f; 灵活性不足&#xff1a;智能合约本质上受到虚拟机本身的限制。例如&#xff0c;以…

详解Oracle数据库的启动

Oracle数据库的启动&#xff0c;其概念可参考Overview of Instance and Database Startup。 其过程可参见下图&#xff1a; 当数据库从关闭状态进入打开数据库状态时&#xff0c;它会经历以下阶段。 阶段Mount状态描述1实例在没有挂载数据库的情况下启动实例已启动&#xff…

【STM32F103】RCC复位和时钟控制

前言 之前介绍外设的时候总是没有提到RCC&#xff0c;但其实我们使用STM32的外设之前都需要做的一步就是打开外设时钟。原本想着没什么可说的&#xff0c;就是用什么外设的时候就在开头加一行代码打开外设时钟就好了。直到最近写到了TIM定时器&#xff0c;我才开始觉得应该说一…

scipy-interpolate整理

文章目录 scipy-interpolate整理Univariate interpolation 单变量插值Multivariate interpolation 多元插值Unstructured data 非结构化数据&#xff1a;:For data on a grid 对于网格上的数据&#xff1a;:Tensor product polynomials 张量积多项式&#xff1a;: 1-D Splines …

Python(33):数据断言(查询数据库数据和插入数据对比)

Python(33):数据断言(查询数据库数据和插入数据对比) 前言&#xff1a; 需求&#xff1a;需要针对查询数据库数据和插入的数据进行对比&#xff0c;用Python语言进行编写 数据库查询的结果可参考&#xff1a;https://blog.csdn.net/fen_fen/article/details/135462484 1、查…

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.&#xff09;引入Jackson库2.&#xff09;定义实体3.&#xff09;解析json字符串4.&#xff09;运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

Python 自学(七) 之面向对象

目录 1. 类的初始化函数 __init__ P186 2. 动态的为类和对象添加属性 P190 3. 类的访问限制 __xxx P192 4. 类的继承及方法重写 P197 1. 类的初始化函数 __init__ P186 每当创建一个类的实例时&#xff0c;__init__都会被执…

C#高级 10 Linq操作

1.Linq操作介绍 Linq操作是C#集成的类似于数据库语言的操作&#xff0c;是通过将数据库的表名映射为类&#xff0c;把数据库的列名映射为属性。 Linq查询主要分为3类&#xff1a;Linq to object(数组、list集合) --内存里面的数据 Linq to sql(查询数据库用的) --在数据库数据…

告别冗余空白,批量删除空白行

你是否遇到过这样的尴尬情况&#xff1a;花费了大量时间整理的文档&#xff0c;却在最后发现其中充斥着无用的空白行&#xff0c;这些多余的空行不仅影响美观&#xff0c;还让整个文档显得杂乱无章。今天&#xff0c;我要给大家介绍一款强大且实用的工具——首助编辑高手&#…

Go采集1688网站数据对比商品价格

最近看了下多多和1688的一些商品价格&#xff0c;发现好多店铺都是无货源拿货一件发货&#xff0c;这就导致层层叠加价格翻了不知道几倍&#xff0c;真所谓多花钱办的事还是一样&#xff0c;因此&#xff0c;今天我就通过一个爬虫程序监控对应商品价格&#xff0c;了解行业龙头…

Java 最小优先队列API设计与实现

Java 学习面试指南&#xff1a;https://javaxiaobear.cn 最小的元素放在数组的索引1处。每个结点的数据总是小于等于它的两个子结点的数据。 1、API设计 类名MinPriorityQueue构造方法MinPriorityQueue(int capacity)&#xff1a;创建容量为capacity的MinPriorityQueue对象成员…

Oracle11.2.0.4从RMAN备份中快速恢复单个表的方法

文章目录 前言一、查询所要恢复的表所涉及的表空间二、创建用于恢复的数据库三、恢复步骤1.恢复控制文件2.修改redo日志名称3.表空间恢复4.表空间recover5.查询数据 前言 由于用户误操作导致某表中的数据错乱&#xff0c;导致业务不能正常使用&#xff0c;现需要将该表恢复到一…

国家数据局——《“数据要素×”三年行动计划(2024—2026年)》

为深入贯彻党的二十大和中央经济工作会议精神&#xff0c;充分发挥数据要素乘数效应&#xff0c;赋能经济社会发展&#xff0c;近日&#xff0c;国家数据局会同中央网信办、科技部、工业和信息化部、交通运输部、等部门联合印发《“数据要素”三年行动计划&#xff08;2024—20…

VS中打开ui文件闪退

解决办法&#xff1a; 依次点击《扩展》-> 《Qt vs tools》-> 《options》-> 《Qt》-> 《general》 -> 《Qt Designer》 -> 《run in detached window》 -> true