【问题标题】:How to lauch an external file from Qt?如何从 Qt 启动外部文件?
【发布时间】:2014-05-29 13:59:55
【问题描述】:

我想打开一个 pdf 文件,只需双击 QListWidget 的一个元素。 我创建了一个批处理文件来打开 Acrobat Reader (reader.bat),但我想要一个特定的 pdf 文件:

void MainWindow::on_FileListWidget_itemDoubleClicked(QListWidgetItem *item)
{
        QFile SelectedModel(Current_Path  + "/Template/" + item->text());
        QString FileName;
        FileName = (Current_Path  + "/Template/" + item->text());
        ::system("e:\\reader.bat");
}

1) 我不知道 QFile 或 QString 有什么更好的方法可以从 QListWidget 中识别和选择文件; 2) 我不知道如何将文件添加到打开 Acorbat Reader 的命令中(在显示的行中,我能够打开程序但不能打开我的文件)。 有什么想法吗?

【问题讨论】:

  • QProcess 是 Qt 启动进程的方式。如果您想使用标准应用程序,请查看 QDesktopServices::openUrl()

标签: c++ qt file external


【解决方案1】:

您可以使用 Qt 原生方法通过调用来实现此行为

QDesktopServices::openUrl(QUrl::fromLocalFile("someFilePath"));

QUrl::fromLocalFile()QDesktopServices::openUrl()

(参考this帖子)

【讨论】:

  • 我想将它与 QTemporaryFile 结合使用。我如何知道程序何时完成,我可以再次删除临时文件?
【解决方案2】:

看看这个:http://qt-project.org/doc/qt-5/qdesktopservices.html#openUrl

QDesktopServices::openUrl(QUrl("file://path/to/file"));

这不仅需要使用默认应用程序打开文件(如果使用 file:// 方案),还会使用默认浏览器打开 Web URL(如果 http://https:// 方案是使用)或在mailto://方案的情况下使用默认电子邮件客户端打开它。它也适用于 steam://itunes:// 等其他方案。

【讨论】:

  • 解决了!我使用了 QDesktopService::OpeUrl 并且所有工作都按我的意愿进行。谢谢
  • 另一个相关问题:QDesktopServices::openUrl(QUrl("file:///c:/MyDir/MyPDF_Files.pdf", QUrl::TolerantMode));完美运行。我想用双击的项目替换括号内的所有引号: QDesktopServices::openUrl(QUrl(Current_Path + item->text(), QUrl::TolerantMode));类似的事情:我该怎么办?
  • 你问的是如何获取用户所在的当前目录?您可以使用 QUrl(QDir::currentDir() + item->text())
  • 没错!谢谢 这是最后的:QDesktopServices::openUrl(QUrl::fromLocalFile(Current_Path + "/MyDir/" + item->text()));
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
相关资源
最近更新 更多