Qt以资源管理器打开文件夹(支持带空格目录、支持打开远程共享目录)
2017-10-23 18:17
911 查看
1,简介
项目里有一个打开文件夹的功能,调用windows资源管理器定位到一个特定的目录。该目录是用户自己设定的,可以是共享文件夹。
在网上搜了些Qt打开文件夹的方法,都不理想。
能打开普通目录的,打不开带空格的;打开带空格的却不支持网络路径。
经过试验和测试,讲其中一种方法的路径做些调整,可以完美满足上面的要求。
2,分析
使用的函数:QDesktopServices::openUrl
普通版:(不支持带空格路径、不支持共享目录)
QDesktopServices::openUrl(QUrl("C:/111", QUrl::TolerantMode)); //打开 QDesktopServices::openUrl(QUrl("C:/111 222", QUrl::TolerantMode)); //打不开,带空格 QDesktopServices::openUrl(QUrl("//XX-PC/share", QUrl::TolerantMode)); //打不开,共享目录
网上找到的是此版本的解决方案,但是带空格和共享目录情况都不支持。
然后找到一个在前面加"file:///"的方案,发现可以支持带空格的,但是依然不支持共享目录。
最后通过调整 / 的数量进行测试,发现当 / 的数量变化时(0个、1个、2个、3个),会出现各种一个能打开另外一个不能打开的组合情况。
其中,只有当不使用 / 时是三种情况都可以打开的。
(其中//XX-PC/share 是使用文件选择对话框里选中一个共享目录后返回的QString内容,自带2个 / ,这里不去动它。)
改进版:(支持空格、共享目录)
QDesktopServices::openUrl(QUrl("file:C:/111", QUrl::TolerantMode)); //打开 QDesktopServices::openUrl(QUrl("file:C:/111 222", QUrl::TolerantMode)); //打开 QDesktopServices::openUrl(QUrl("file://XX-PC/share", QUrl::TolerantMode)); //打开
经过测试目前在我电脑这种写法,可以同时支持上述三种情况。
相关文章推荐
- qt iOS app 如何获取共享文件夹文件,如何使用document文档目录文件
- [BAT] 以当前时间为名创建文件夹,将本地文件夹里的文件拷贝到远程共享目录
- [BAT] 以当前时间为名创建文件夹,将本地文件夹里的文件拷贝到远程共享目录,而且保证本地和Jenkins上运行都成功
- 页面中通过点击链接打开本地文件夹或者远程的文件夹,IE完美支持,chrome和FireFox会出现问题
- Qt-编程模块 001: 浏览(选择)、打开 文件和文件夹(目录) --- 如何让按钮**记忆上次打开的文本路径**的功能
- Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)
- 修改:双击文件夹自动已资源管理器打开
- 使用sshfs来让sublime打开远程目录
- 远程共享文件夹的切换访问用户帐号
- java 用poi 将远程共享文件夹中word转html
- 使用psexec共享远程文件夹
- 本地计算机无法识别正在用于访问远程共享文件夹的用户名
- 通过WMI实现了远程创建共享目录,远程拷贝文件等操作:
- Java远程共享目录的操作代码
- 访问远程服务器上的共享文件夹
- 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中[解决方法]
- 操作远程目录文件---mount后就可以进入/mnt/smbtmp操作远端主机上的共享目录了。
- Linux学习之虚拟机下hgfs目录创建及共享文件夹创建
- 打开ASP.NET Web项目时,此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处的项目文件夹。返回的错误是: 无法打开Web项目“”。返回的错误是: 无法打开Web项目“...”。文件路径“...”怀URL“...”不
- Linux共享远程目录