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

最近用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.hqwc.cn/news/343848.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型学习与实践笔记(四)

一、大模型开发范式 RAG&#xff08;Retrieval Augmented Generation&#xff09;检索增强生成&#xff0c;即大模型LLM在回答问题或生成文本时&#xff0c;会先从大量的文档中检索出相关信息&#xff0c;然后基于这些检索出的信息进行回答或生成文本&#xff0c;从而可以提高回…

从事铁路工作保护足部,穿什么劳保鞋更安全

铁路运输在我国交通运输业中起着骨干作用&#xff0c;为国民经济的可持续发展和人口流动做出了巨大贡献。安全是铁路运输不可忽视的问题&#xff0c;在作业场地随处能见到“安全就是生命&#xff0c;责任重于泰山”的安全标语&#xff0c;由此可见安全问题是放在首位的。 铁路施…

PHP面试小结(20240108)

PHP 部分 1. php的包管理工具是如何实现自动加载的 换句话问&#xff1a;composer 实现原理是什么&#xff1f;spl_autoload_register() 首先&#xff0c;Composer 是 PHP 的一个包管理和包依赖管理的工具 &#xff0c; 打开安装之后生成的 "vendor" 文件, 里面有个…

使用 EmbeddingBag 和 Embedding 完成词嵌入

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客\n&#x1f366; 参考文章&#xff1a;365天深度学习训练营\n&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.co…

【MIdjourney】关于图像中人物视角的关键词

本篇仅是我个人在使用过程中的一些经验之谈&#xff0c;不代表一定是对的&#xff0c;如有任何问题欢迎在评论区指正&#xff0c;如有补充也欢迎在评论区留言。 1.全景镜头(panorama) 全景镜头是一种广角镜头&#xff0c;可以捕捉到比普通镜头更广阔的视野范围。全景镜头&…

挑选富集分析结果 enrichments

#2.2挑选term---selected_clusterenrichenrichmets[grepl(pattern "cilium|matrix|excular|BMP|inflamm|development|muscle|vaso|pulmonary|alveoli",x enrichmets$Description),]head(selected_clusterenrich) distinct(selected_clusterenrich)# remove duplica…

2024.1.11 关于 Jedis 库操作 Redis 基本演示

目录 引言 通用命令 SET & GET EXISTS & DEL KEYS EXPIRE & TTL TYPE String 类型命令 MGET & MSET GETRANGE & SETRANGE APPEND INCR & DECR List 类型命令 LPUSH & LRANG LPOP & LPOP BLPOP & BRPOP LLEN Set 类型命…

自动化测试数据校验神器!

在做接口自动化测试时&#xff0c;经常需要从接口响应返回体中提取指定数据进行断言校验。 今天给大家推荐一款json数据提取神器: jsonpath jsonpath和常规的json有哪些区别呢&#xff1f;在Python中&#xff0c;json是用于处理JSON数据的内置模块&#xff0c;而jsonpath是用…

给定n个字符串s[1...n], 求有多少个数对(i, j), 满足i < j 且 s[i] + s[j] == s[j] + s[i]?

题目 思路&#xff1a; 对于字符串a&#xff0c;b, (a.size() < b.size()), 考虑对字符串b满足什么条件&#xff1a; 由1、3可知a是b的前后缀&#xff0c;由2知b有一个周期是3&#xff0c;即a.size()&#xff0c;所以b是用多个a拼接而成的&#xff0c;有因为a是b的前后缀&…

C++每日一练(15):简单幂计算

题目描述 输入两个数a和b&#xff0c;求a的b次方。 输入 输入两个整数a&#xff0c;b&#xff08;1<a<10&#xff0c;1<b<15&#xff09;。 输出 输出一个正整数&#xff0c;该值<1000000000000。 输入样例 3 3 输出样例 27 参考答案 #include<bits/stdc.h&…

87.乐理基础-记号篇-反复记号(一)反复、跳房子

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;86.乐理基础-记号篇-速度记号-CSDN博客 首先是反复记号表总结图&#xff1a; 当前是写前两个记号&#xff0c;其余记号后面写&#xff1a;这些反复记号最主要的目的很简单&#xff0c;还是为了节约纸张&#xff0c…

GPT Store,是否会成为下一个App Store?

经历了一场风波后&#xff0c;原本计划推出的GPT Store终于成功上线。OpenAI在北京时间1月11日推出了GPT Store&#xff0c;被广泛视为类似于苹果的"App Store"&#xff0c;为人工智能应用生态系统迈出了重要一步。然而&#xff0c;OpenAI要想将GPT Store打造成苹果般…