Qt編程調用外部程序打開文件

QDesktopServices::openUrl ( QUrl::fromLocalFile(fileName) );
fileName:文件名,如C:/新建 Microsoft Word 文檔.doc
QUrl::fromLocalFile()一定要用這個方法,因爲文件名或路徑中中文或空格,不然打不開文件.
直接用QUrl(fileName)只能打開英文名稱和沒有空格路徑的文件.

 

如何啓動一個外部程序
答:1、使用QProcess::startDetached()方法,啓動外部程序後立即返回;
2、使用QProcess::execute(),不過使用此方法時程序會最阻塞直到此方法執行的程序結束後返回,這時候可使用QProcess和QThread這兩個類結合使用的方法來處理,以防止在主線程中調用而導致阻塞的情況
先從QThread繼承一個類,重新實現run()函數:

Quote:

class MyThread : public QThread
{
public:
   void run();
};

void MyThread::run()
{
QProcess::execute("notepad.exe");
}


這樣,在使用的時候則可定義一個MyThread類型的成員變量,使用時調用其start()方法:

Quote:

class ...............
{...........
MyThread thread;
............
};

.....................
thread.start();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章