Qt中与启动外部程序的类:QProcess
,其父类是QIODevice
。
The QProcess class is used to start external programs and to communicate with them
QProcess类用于启动外部应用程序以及和它们通信。
启动外部应用程序方法:
void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite)
//program 启动的应用程序
//arguments 给启动的应用程序的参数
实现一个类似windows的运行窗口的应用程序
设计界面:
编写代码:
#include "widget.h"
#include "ui_widget.h"
#include <QProcess>
#include <QFileDialog>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle(tr("运行"));
connect(ui->lineEdit, &QLineEdit::returnPressed, this, &Widget::on_EnterPushButton_clicked);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_EnterPushButton_clicked()
{
QProcess *myProcess = new QProcess();
QString process = ui->lineEdit->text(); //获取要打开的应用程序
myProcess->start(process.trimmed()); //trimmed()去掉末尾的空格
this->close(); //关闭窗口
}
void Widget::on_CancelPushButton_2_clicked()
{
this->close();
}
void Widget::on_BrowserPushButton_3_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("浏览"), tr("C:"), tr("程序(*exe *bat *com *cmd)"));
ui->lineEdit->setText(fileName);
}
实现关机操作
QProcess *myProcess = new QProcess();
QString process("C:/WINDOWS/system32/shutdown.exe");
QStringList arg;
arg << "-s";
myProcess->start(process, arg); //启动程序