2013-06-21 117 views
1

請問我如何關閉以前用qt C++中的QDesktopServices::OpenURL打開的應用程序。 因爲我需要更新PDF中的文本,我已經在某個時間點在應用程序之外打開了它。用qt關閉外部應用程序

QPrinter printer(QPrinter::HighResolution); 
printer.setOutputFormat(QPrinter::pdfFormat); 
printer.setOutputFileName("file.pdf"); 
doc.print(&printer); // doc is QTextDocument 
QDesktopServices::openUrl(QUrl("file.pdf")); 

,也是我想知道QDesktopServices::OpenURLQt::openUrlExternally和基本的區別時使用它們。

回答

6

您無法關閉由QDesktopServices::OpenURL打開的外部應用程序。沒有這樣的選項,並且此方法不提供關於可用於關閉它的已啓動進程的信息。

您可以使用本機C++平臺相關函數來確定PDF查看器可執行文件的路徑。然後你可以使用QProcess來啓動它。因此可以使用kill()terminate()來關閉應用程序。

Qt::openUrlExternally可以用在QML代碼中,而QDesktopServices::OpenURL可以用在C++代碼中。這是唯一的區別。我已閱讀Qt::openUrlExternally來源,它在內部調用QDesktopServices::OpenURL

+0

謝謝。但由於該文件已打開,我無法更新其內容,因此我想提示用戶先關閉它。我如何測試文件是否打開(即'doc.print(&printer)'無法工作。) – Capton