QT实现用本地资源管理器来打开文件夹

2023-10-31 05:04

本文主要是介绍QT实现用本地资源管理器来打开文件夹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QString path="文件夹路径";QDesktopServices::openUrl(QUrl("file:"+path, QUrl::TolerantMode));

在windows中QT编程,使用资源管理器来打开指定本地文件夹的方法:

第一种:使用Qprocess命令(相当于在cmd命令管理窗口执行命令)

QString strLogPath = "start " + "你的文件夹所在目录";
QProcess process(this);
process.setProgram("cmd");//设置命令形式
QStringList argument;
argument << "/c" << strLogPath;//在cmd命令中,/c代表“执行完命令后返回”。它表示在执行完命令后,程序将返回到调用cmd的环境中。使用/c参数可以避免程序在执行过长命令时处于等待状态而呈现假死的现象。
process.setArguments(argument);
process.start();
process.waitForStarted(); //等待程序启动
process.waitForFinished();//等待程序关闭
  1. QString strLogPath = "start " + "你的文件夹所在目录";:这行代码创建了一个QString对象,该对象包含一个字符串,这个字符串是"start "(一个英文单词"start"后面跟着一个空格)和一个目录路径(例如:"你的文件夹所在目录")。这个路径应该是你想在其中启动新进程的目录。
  2. QProcess process(this);:这行代码创建了一个QProcess对象。QProcess类用于在Qt应用程序中启动外部进程。这里的this是指当前的Qt对象,通常用于将父窗口与子窗口关联起来。
  3. process.setProgram("cmd");:这行代码设置了要执行的程序。这里,它设置为"cmd",即Windows的命令行解释器。
  4. QStringList argument;:这行代码创建了一个QStringList对象,该对象将用于存储命令行参数。
  5. argument << "/c" << strLogPath;:这行代码向QStringList对象中添加了两个参数。"/c"是一个cmd命令行的选项,意思是执行完命令后返回。strLogPath是上面定义的包含文件夹路径的字符串。
  6. process.setArguments(argument);:这行代码将上面定义的参数列表设置到QProcess对象中。
  7. process.start();:这行代码启动了进程。
  8. process.waitForStarted();:这行代码会阻塞当前线程,直到进程开始运行。
  9. process.waitForFinished();:这行代码会阻塞当前线程,直到进程完成执行。

总结:这段代码会启动一个新的cmd窗口,并执行"/c"命令(执行完就返回),然后执行"start " + 你的文件夹所在目录命令(在cmd中打开指定目录)。然后程序会等待直到这个cmd进程执行完毕。

第二种方法:

使用QT的QDesktopServices的方法去实现,注意里面的这个"file"一定要保留,不然会报下面这个错误:

ShellExecute  路径  failed (error 2).

QString path="文件夹路径";
QDesktopServices::openUrl(QUrl("file:"+path, QUrl::TolerantMode));

使用 QDesktopServices::openUrl() 方法打开一个文件或URL。在这个方法中,需要传递一个 QUrl 对象。一种不同的方式是直接使用 QUrl 构造一个URL,然后传递给 openUrl() 方法。

*********************************QDesktopServices的补充***********************************************

DesktopServices 类提供用于访问常见桌面服务的方法。

许多桌面环境提供的服务可供应用程序用来执行常见任务,例如打开网页,其方式既一致又考虑了用户的应用程序首选项。

此类包含为这些服务提供简单接口的函数,这些接口指示它们是成功还是失败。

openurl() 函数用于打开位于外部应用程序中任意 URL 的文件。对于与本地申请系统上的资源相对应的URL(URL方案为“文件”),将使用合适的应用程序来打开文件;否则,将使用 Web 浏览器来获取和显示文件。

用户的桌面设置控制是打开某些可执行文件类型进行浏览,还是改为执行这些文件类型。某些桌面环境配置为阻止用户执行从非本地 URL 获取的文件,或者在执行之前请求用户的许可。

在用户桌面环境的相应 Web 浏览器中打开给定的,如果成功则返回;否则返回 。truefalse

如果 URL 是对本地文件的引用(即 URL 方案是“文件”),则将使用合适的应用程序而不是 Web 浏览器打开它。

以下示例在 Windows 文件系统上打开一个文件,该文件位于包含空格的路径上:

QDesktopServices::openUrl(QUrl("file:///C:/Program Files", QUrl::TolerantMode));

如果指定了 URL,则用户的电子邮件客户端将用于打开包含 URL 中指定选项的 composer 窗口,类似于 Web 浏览器处理链接的方式。mailtomailto

例如,以下 URL 包含收件人 recipient (), subject (), 和body ():user@foo.comTestJust a test

mailto:user@foo.com?subject=Test&body=Just a test

第三种方法:

除了 QDesktopServices::openUrl() 和使用 QProcess 启动外部程序之外,还可以使用其他一些方法来实现相同的功能,例如使用 QDir 类来访问文件系统并打开文件或目录。下面是一个使用 QDir 的例子:

#include <QDir>  QString path = "文件夹路径";  
QDir dir(path);  
if (dir.exists()) {  dir.open();  
} else {  // 处理路径不存在的情况  
}

这个例子中,我们首先创建一个 QDir 对象,并传入要访问的路径。然后,我们使用 exists() 方法检查路径是否存在,如果存在,就使用 open() 方法打开该目录。这样,用户就可以在文件管理器中直接打开指定的目录。

#AI诈骗进入高发期,普通人该如何防范?#

这篇关于QT实现用本地资源管理器来打开文件夹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构