请问如何关闭先前在qt c ++中使用QDesktopServices::OpenURL
打开的应用程序。
因为我需要在我的应用程序之外的某个时间点打开的PDF中更新文本。
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::pdfFormat);
printer.setOutputFileName("file.pdf");
doc.print(&printer); // doc is QTextDocument
QDesktopServices::openUrl(QUrl("file.pdf"));
此外,我想了解QDesktopServices::OpenURL
和Qt::openUrlExternally
之间的区别,以及何时使用它们。
答案 0 :(得分:6)
您无法关闭QDesktopServices::OpenURL
打开的外部应用程序。没有这样的选项,并且此方法不提供有关可用于关闭它的已启动进程的信息。
您可以使用与本机C ++平台相关的函数来确定PDF查看器可执行文件的路径。然后,您可以使用QProcess
启动它。因此kill()
和terminate()
可用于关闭应用程序。
Qt::openUrlExternally
可以在QML代码中使用,QDesktopServices::OpenURL
可以在C ++代码中使用。这是唯一的区别。我已阅读Qt::openUrlExternally
来源,内部调用QDesktopServices::OpenURL
。