2016-10-03 9 views
-1

Hy男。私は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

この場合、端末のUIは必要ないと思われるので、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();') –

関連する問題