2016-11-16 270 views
1

我想要做「vim」命令,「vim」命令用於在linux中打開一個新的編輯器。 「setup.csh」用QProcess打開文件「vi」editör。我想用gui來運行這個命令。如何用QProcess運行vim終端

Linux終端命令:「VIM /home/intern2/elif/Project/setup.csh」。如何我可以運行此命令GUI

我在Qt中寫了下面的命令,但它並沒有使用QProcess中工作。

QProcess *process1=new QProcess(this); 
process1->start("vim" , QStringList() <<"/home/intern2/elif/Project/setup.csh"); 
process1->waitForBytesWritten(); 
process1->waitForFinished(); 
ui->textEdit_3->append(process1->readAllStandardOutput()); 

不幸的是,我給了以下錯誤消息

錯誤消息:

Warning: Output is not a terminal 
Warning: Input is not from a terminal 
+0

你想打開一個新的終端窗口嗎?如果是這樣,你需要實際指定終端應用程序,如'process1-> start(「xterm」,QStringList()<<「 - e」<<「vim」<<「/ home/intern2/elif/Project/setup。 CSH「);'。如果你想要文件內容,你應該使用'cat'來代替(或者實際上你應該用'QFile'打開文件,在GUI後面打開shell程序應該小心處理),所以'process1-> start(「cat 「,QStringList()<<」/ home/intern2/elif/Project/setup.csh「);'? – PeterT

+0

謝謝你,我按照我想要的@PeterT –

回答

0

我得到了它這個工作:

QProcess* process = new QProcess(); 
qint64* processId = new qint64(); 
process->startDetached("/usr/bin/vim", QStringList(), QString(), processId); 

// Wait for process to be closed by user (kill() 
// does not actually kill the process, but tests if it exists) 
while (kill(*processId, 0) == 0) {} 

// Done 
delete processId; 
delete process; 

不要忘記添加#include <signal.h>kill()函數。