2016-10-03 134 views
-1

Hy guys。我是Qt創建者的新手,現在我正在努力將它連接到Linux Mint 18 MATE終端。問題是,我可以打開終端,但其他命令不會執行。下面是我想要的代碼 -linux mint終端不執行Qt創建者提供的命令

void access::on_pushButton_clicked(){ 

    QProcess process; 
    process.start("mate-terminal cd /tmp"); 
    process.write("ls -Al"); 
    process.closeWriteChannel(); 

    process.waitForFinished(); 
    QByteArray output = sh.readAll(); 
    process.close(); 
    } 

所有我需要這方面做的是 -

  1. 開放終端
  2. 到/ tmp目錄
  3. 打印出來的內容

任何幫助或暗示我做錯了什麼,將不勝感激。謝謝!

+0

爲什麼不使用QDir/QFileInfo來列出/ tmp中的文件? – Tryum

回答

0

看來你在這種情況下不需要終端用戶界面,所以你不需要打開mate-terminal,你應該打開sh來代替。還請注意,在撥打start方法後,您應該waitForStarted

QProcess process; 
process.start("sh"); 
process.waitForStarted(); 
process.write("ls /tmp -Al"); 
process.closeWriteChannel(); 
process.waitForFinished(); 
QByteArray output = process.readAll(); 
process.close(); 
qDebug() << output; 

注:sh是一個命令行解釋器,並有自己的腳本語言,如果你只想要開始ls,這樣你就可以啓動它直接而不必在最先開始sh

QProcess process; 
process.start("ls /tmp -Al"); 
process.waitForFinished(); 
QByteArray output = process.readAll(); 
process.close(); 
qDebug() << output; 
+0

嗯,實際上我需要終端,因爲我必須告訴它通過Qt Creator執行命令,並將結果顯示在終端窗口中。但謝謝你的答案。 – Qtstruggler

+0

@Qtstruggler所以,如果你需要終端的窗口,爲什麼要關閉它? ('process.close();') –