在Qt中用默认程序打开文件

用法:    QProcess::execute("explorer 文件名");
例:        QProcess::execute("explorer c:\\123.txt");

----------------------------------------------------------------------

应该早有大虾发现了这个方法,只是我没搜到,于是有了下面这篇聒噪的探索文章。

如何在Qt中用默认程序打开文件。比如给个"123.html"参数,就能用浏览器打开。
网上搜了一下,多数的解决方法是用ShellExecute这个Windows Api函数。
可行,但总希望能找到一个Qt的Api来使用。

继续找资料。发现一个QProcess类。
测试QProcess::execute("notepad.exe");
成功打开记事本。
以为有戏。。

接着测试 --- ---
QProcess::execute("start c:\\123.txt");
失败了。。心凉了半截。

查看QProcess::execute代码,发现最终其实就是调用windows的CreateProcess函数。
start估计不是个程序,只是个命令,所以报了个无法找到程序的错误。
反过来说只要找到一个程序,这个程序能用默认程序打开文件就行了。

继续找资料。
在一大堆信息中苦苦寻找,终于在一个角落发现有人提到了explorer.exe。
很熟悉的名字吧。这个就是windows的文件资源管理器。打开进程管理器,总会见到几个在运行。
地址如下(感谢那位网友)
http://zhidao.baidu.com/link?url=tlp1jLfEsBICWgnTeuKT8hiahA7gFtghzoQ73ufI0frbI5Uw03mI79n5Qi8739oq68nlws4wSRlW0Jmk3wU8Ya
冥冥之中,有个声音在对我说,这就是解决问题的钥匙了。^-^

接着查找explorer.exe的参数用法。
闲话少说,经过在cmd一番测试。得出用法是explorer filename.
例:explorer c:\123.txt
加不加引号随意,要注意的是用反斜杠,在cmd窗口只用一杠就行了,否则就会打开我的文档。

在Qt中测试代码
QProcess::execute("explorer c:\\123.txt");
成功打开!开心^-^

时间: 2024-07-31 18:55:44

在Qt中用默认程序打开文件的相关文章

qt: 系统默认程序打开文件或者软件;

Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString("file:///") + m_szHelpDoc; bool is_open = QDesktopServices::openUrl(QUrl(m_szHelpDoc, QUrl::TolerantMode)); if(!is_open) { LogWriter::getLogCenter()-&

在终端中用默认程序打开文件(转)

在Linux环境下工作,大部分时间都是在与终端打交道,经常会遇到要查看某个文件,比如一个图片或者一个word文档(不能在终端中直接查看的).这时 通常的做法是切换到gui界面,到文件所在的目录,双击想打开的文件.另外一种方法是直接在shell中输入指定的程序打开文件,比如: evince xx.pdf 查看某个pdf文件.当然这样做的前提是你得记得住那些程序的名字,比如你能记得住用LibreOffice打开一个word文件的命令吗?反正我是记不 住. 在图形界面中已经定义了很多默认的文件打开方式

Python 调用让系统自动调用默认程序打开文件?

windows上可以使用os.startfile os.startfile(file) linux上可以使用xdg-open subprocess.call(["xdg-open", file]) mac os上可以使用open subprocess.call(["open", file])

Java 调用系统默认程序打开

比如,我要打开一个PPT文件,怎么办?最简单的办法,调用系统默认的PowerPoint打开. 这里用到的是  Java.awt.Desktop类 Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理 URI 或文件. 支持的操作包括: 启动用户默认浏览器来显示指定的 URI: 启动带有可选 mailto URI 的用户默认邮件客户端: 启动已注册的应用程序,以打开.编辑或打印指定的文件. 下面举个栗子: package com.sujian; import ja

Mac命令行指定特定程序打开文件

如果文件已被指定默认程序 open httpd.conf 指定一个特定程序打开文件 # 用 sublime text 打开 httpd.conf open -a /Applications/Sublime\ Text.app/ httpd.conf 如果使用频繁,还可以添加软连接 sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/bin/sublime 输入sublime就可以打开 su

MFC程序打开文件对话框出错的问题解决

前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题,运行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. 这次要好好看下这个问题. 具体做法就是深入细致的跟踪.跟踪.跟踪... 应用代码,跟进 MFC的代码,跟进 Alt+8调出反汇编,跟进... 反复多次重复追踪.缩小目标,确定问题是:在CFileDialog 的析构函数中,调用了CString 的析构函数, 恰恰是析构CSring 出错了. CFi

WP8.1 实现Continuation程序(打开文件,保存文件等)

以保存文件为例 首先,在项目中加入ContinuationManager.cs类,以及SuspensionManager.cs类. 其次,在App.xaml.cs中,完成如下步骤: 1. 添加ContinuationManager类的实例作为属性. public ContinuationManager ContinuationManager { get; private set; } 2. 加入如下的方法 // for continuable private Frame CreateRootFr

修改与文件类型关联的默认程序

13/12/27 安装了Planner项目管理软件后,发现.planner文件的默认打开程序为gedit.想要将其修改过来,在open with的程序列表里也没有planner这一项,而且也无法人工指定命令行,似乎这一功能被Nautilus关掉了.通过网上搜索,Gnome系统中文件类型的描述,即mimetype,存放于/usr/share/mime与~/.local/share/mime目录下.而用于描述应用程序所能打开的文件类型则主要放在其中的application子目录中.可以看到,其中已经

QT打开文件或文件夹或网络地址

打开文件或文件夹 如果是文件或文件夹 必须带file:/// 后面可以是文件(夹)的绝对路径 QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users", QUrl::TolerantMode)); QProcess::execute("explorer c:\\"); 只适用windows 不晓得第二种为啥有时候不能正确打开文件夹.难道windows的explorer.e