在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");
成功打开!开心^-^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章