Qt运行cmd命令

 项目做到一定阶段,常常须要在原来的project上调用外部程序。

Qt为此提供了QProcess类,QProcess可用于完毕启动外部程序,并与之交互通信。

一、启动外部程序的两种方式:
(1)一体式:void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite)
        外部程序启动后。将随主程序的退出而退出。
(2)分离式:void QProcess::startDetached(const QString & program, const QStringList & arguments, const QString & workingDirectory = QString(), qint64 * pid = 0)
        外部程序启动后,当主程序退出时并不退出。而是继续执行。

    值得注意的是。当程序路径中含有空格的时候,仅设置程序路径program是无法被识别的。解决方法是再将程序路径传递给arguments。

比如:


  1. //1-不带空格。能够启动
  2. process->start("F:/AppInst/115/115com/115com.exe");

  3. //2-带空格,无法启动
  4. process->start("C:/Program Files/HaoZip/HaoZip.exe");

  5. //3-带空格,使用带參模式。能够启动
  6. process->start("C:/Program Files/HaoZip/HaoZip.exe"QStringList("C:/Program Files/HaoZip/HaoZip.exe"));
二、 启动之前须要做的工作:
    To start a process, pass the name and command line arguments of the program you want to run as arguments to start(). Arguments are supplied as individual strings in a QStringList.
    启动一个外部程序,须要传递外部程序的路径和运行參数。參数用QStringList来带入。


(1)设置路径:          void QProcess::setProgram(const QString & program)
(2)设置參数[可选]: void QProcess:: setArguments(const QStringList & arguments)
(3)启动:                void QProcess::start(OpenMode mode = ReadWrite)


Qt运行cmd命令

界面上添加一个button,一个textedit,一个lineedit
void MainWindow::on_pushButton_clicked()
{
    ui->textEdit->clear();
    QProcess process(this);
    process.setProgram("cmd");
    QStringList argument;
    argument<<"/c"<<ui->lineEdit->text();
    process.setArguments(argument);
    process.start();
 
  
    process.waitForStarted(); //等待程序启动
    process.waitForFinished();//等待程序关闭
    QString temp=QString::fromLocal8Bit(process.readAllStandardOutput()); //程序输出信息
    ui->textEdit->setText(temp);
 
  
 
  
 
  
}
注意:直接Process.start("cmd.exe")跳不出cmd界面 
             Process.start("regedit.exe")能跳出注册表界面




猜你喜欢

转载自blog.csdn.net/vample/article/details/78872587