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();