1. 程式人生 > >QProcess呼叫外部程式:QProcess::start與QProcess::execute

QProcess呼叫外部程式:QProcess::start與QProcess::execute

    QT提供了一個QProcess類用於啟動一個外部程式並與之通訊。QProcess::start()與QProcess::execute()都能完成啟動外部程式的任務,二者有什麼區別呢?區別在於start()是非阻塞的,而execute()是阻塞的。專業點講,execute()=start()+waitforFinished()。下面是一個按鍵的槽函式,它響應按鍵的按下動作:

    QString program = "amixer";
    QStringList arguments_mute_on;
    arguments_mute_on<<"cset"<<"numid=1"<<"0";
    volCtrl->execute(program,arguments_mute_on);
    close();
而開始我用的是volCtrl->start(program,arguments_mute_on),結果呼叫的程式無效,設定不起作用,經過分析原因是後面還有個close()函式。

這裡顯然應該是呼叫阻塞程序的典型場合。