qt怎么用默认的打开方式打开本地文件,来者有分

arabicsara 2010-09-05 07:16:57
qt怎么用默认的打开方式打开本地文件,
QProcess p;
p.startDetached(str);怎么不行
...全文
1451 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hutoman 2012-05-15
  • 打赏
  • 举报
回复
openUrl是QDesktopServices的静态方法。要打开本地文件,url使用file:///的形式。
supervila 2010-12-02
  • 打赏
  • 举报
回复
QString strPath = "";//这里填写你文件的路径,有中文的话可能需要编码转换
QDesktopServices bs;
bs.openUrl(QUrl(strPath));
dext 2010-09-06
  • 打赏
  • 举报
回复
应该是 #include <shellapi.h>

[Quote=引用 8 楼 lefttime 的回复:]
#include <Windows.h>
[/Quote]
lefttime 2010-09-05
  • 打赏
  • 举报
回复
#include <Windows.h>
arabicsara 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 darkdong 的回复:]
直接用就好了
ShellExecuteA(NULL,"open","C:/Program Files/Internet Explorer/iexplore.exe",NULL,NULL,SW_SHOW);
[/Quote]mainwindow.cpp:374: error: 'ShellExecuteA' was not declared in this scope
巴依老爷 2010-09-05
  • 打赏
  • 举报
回复
直接用就好了
ShellExecuteA(NULL,"open","C:/Program Files/Internet Explorer/iexplore.exe",NULL,NULL,SW_SHOW);
lefttime 2010-09-05
  • 打赏
  • 举报
回复
通过QRunnable来间接调用ShellExcute即可~``
arabicsara 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lefttime 的回复:]
1. 转义字符 这问题可用斜杠/即可解决;
2. 中文可以打开, 只是编码问题的出现导致而已, 所以转换一下即可, 例如
QString string = QString::fromLocal8Bit("记事本.exe");
[/Quote]大哥,这问题困扰我一天了,怎么打开本地文件,比如一个C:/x.csv,就用系统关联的打开方法打开,就像ShellExcute的效果
lefttime 2010-09-05
  • 打赏
  • 举报
回复
1. 转义字符 这问题可用斜杠/即可解决;
2. 中文可以打开, 只是编码问题的出现导致而已, 所以转换一下即可, 例如
QString string = QString::fromLocal8Bit("记事本.exe");
arabicsara 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 darkdong 的回复:]
使用windows api:ShellExecute
[/Quote]qt怎么使用win api?

我找了一下:
QProcess *process;

process=new QProcess;
QString string("C:\\flashxp\\flashfxp.exe");
if(!process->startDetached(string))
{
QMessageBox::warning(this,tr("erro"),tr("%1").arg(process->error()),QMessageBox::Ok);
}
主要注意的有两点:

1、转义字符,在盘符后面的一定是"\\",,而不是“\”。

2、在string里面的路径不能有空格。

以上两点错误在编译的时候不会出错,但是检测一下process erro就会发现出来了,出错的结果是:5,不知名的错误。



这种方法只能打开exe文件,有中文也打不开
巴依老爷 2010-09-05
  • 打赏
  • 举报
回复
使用windows api:ShellExecute

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧