一、QProcess 打开一个bash终端,能够执行通常的命令,主要实现步骤以下bash
m_proces_bash = new QProcess;
m_proces_bash->start("bash");
m_proces_bash->waitForStarted();
connect(m_proces_bash,SIGNAL(readyReadStandardOutput()),this,SLOT(readBashStandardOutputInfo()));
connect(m_proces_bash,SIGNAL(readyReadStandardError()),this,SLOT(readBashStandardErrorInfo()));
二、向终端发送命令app
void MainWindow::on_pushButton_bashrun_clicked()
{
QString strCmd = ui->lineEdit_bashcmd->text();
ui->textEdit_bashmsg->append("Linux:~$ "+strCmd);
m_proces_bash->write(ui->lineEdit_bashcmd->text().toLocal8Bit() + '\n');
ui->lineEdit_bashcmd->clear();
}
三、接收终端返回ide
void MainWindow::readBashStandardOutputInfo()
{
QByteArray cmdout = m_proces_bash->readAllStandardOutput();
if(!cmdout.isEmpty()){
ui->textEdit_bashmsg->append(QString::fromLocal8Bit(cmdout));
}
QScrollBar* scroll = ui->textEdit_bashmsg->verticalScrollBar();
scroll->setSliderPosition(scroll->maximum());
}
void MainWindow::readBashStandardErrorInfo()
{
QByteArray cmdout = m_proces_bash->readAllStandardError();
if(!cmdout.isEmpty()){
ui->textEdit_bashmsg->append(QString::fromLocal8Bit(cmdout));
}
QScrollBar* scroll = ui->textEdit_bashmsg->verticalScrollBar();
scroll->setSliderPosition(scroll->maximum());
}
四、当命令须要超级权限时,sudo xx 须要修改成sudo -S xxui
例如:(1)ls 执行正常this
(2)sudo ls 执行失败code
(3)执行sudo -S ls 执行成功blog