gpt4 book ai didi

c++ - Qt:如何通过外部程序打开文件, "open with..."对话框

转载 作者:行者123 更新时间:2023-11-28 02:09:45 25 4
gpt4 key购买 nike

如何通过关联的外部程序打开文件,如果它失败调用“打开方式...”对话框?

它可以是平台独立代码吗?或者我需要使用

#ifdef
#else
#endif

为每个平台实现“打开...”对话框调用的结构?

提前致谢

编辑:更新,经过几个小时的研究,我找到了适用于 Windows 的良好解决方案。

我们尝试使用 ShellExecute(...) 打开文件,如果由于文件关联错误而失败,我们通过“打开方式”Shell32.dll 对话框打开文件

QString file_path = "C:\VeryGoodPath.txt";
int iResult = (int)ShellExecuteA(0, 0, file_path.toStdString().c_str(), 0, 0 , SW_SHOW );
if(iResult>32)
{
// Succesful run
}
else
{
if(SE_ERR_ASSOCINCOMPLETE==iResult)
{
QString ShellCmd = "C:\\Windows\\system32\\shell32.dll,OpenAs_RunDLL \""+file_path +"\"";
ShellExecuteA(0,"open", "C:\\Windows\\system32\\rundll32.exe",ShellCmd.toStdString().c_str(),NULL, SW_NORMAL);
}
else
{
// Errors
}
}

EDIT2:问题是,我不使用

 QDesktopServices::openUrl(...)

这个函数

 QUrl::fromLocalFile("<path_to_your_file>")

最佳答案

一种简单的方法是使用 QDesktopServices::openUrl :

QDesktopServices::openUrl(QUrl::fromLocalFile("<path_to_your_file>"));

这样你就可以让操作系统来处理它。如果程序与该文件(或一般 URL。您也可以使用此功能在默认浏览器中打开 url)相关联,操作系统将启动它或显示默认的“打开方式”对话框。

关于c++ - Qt:如何通过外部程序打开文件, "open with..."对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36156903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com