1.QProcess:
内容:学习QProcess的相关概念及作用
1.1 QProcess是什么?:
概念:
QProcess类是用来启动一个外部程序并与之通信。简单来讲就是使用QProcess类可以调用其他的可以执行的程序,产生你想要结果的工具。
1.2 调用的方式和形式:
内容:
想要启动一个进程,可以传递你想启动的程序的名字和命令行参数作为参数传递给start()函数。参数作为QStringList中每一个单独的字符串。或者,你可以通过setProgram()和setArguments()来设置该程序,然后调用start()或者open()启动该程序。
调用的方式一般有三种;
1、 启动时在指定程序名时就附带上参数
QProcess caller;
caller.start("G:/file/Bar/x64/Debug/Bar.exe" /c ping 127.0.0.1);
2、 启动时分别指定函数名和参数列表
QProcess caller;
caller.start("G:/file/Bar/x64/Debug/Bar.exe",
QStringList()<<"/c"<<"ping 127.0.0.1", QIODevice::ReadWrite);
3、 分别指定函数名和参数,然后再启动
QProcess caller;
caller.setProgram("G:/file/Bar/x64/Debug/Bar.exe");
caller.setArguments(QStringList()<<"/c"<<"ping 127.0.0.1");
caller.start(QIODevice::ReadWrite);
2.实例:
实例:调用外部程序的实例
2.1关键代码
void MainWindow::start()
{
QProcess* caller = new QProcess(this);//创建对象,指定父类指针
caller->start("G:\\file\\Bar\\x64\\Debug\\Bar.exe");
//或者可以用这种找文件的符号来写
//如果用“\”来作为文件路径分隔符则会找不到文件。
//caller->start("G:/file/Bar/x64/Debug/Bar.exe");
qDebug()<<"this here"<<endl;
}
在实际运用中发现了一个小问题,如果使用“\”作为文件地址分隔符,则是不不能识别出这是文件地址,正确的的方式是:
(1)使用“\”,如:G:\file\Bar\x64\Debug\Bar.exe
(2)使用“/”, 如:G:/file/Bar/x64/Debug/Bar.exe
2.2项目所有源码:
mainwindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QProcess>
#include <QTableWidget>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void start();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->toolButton,SIGNAL(clicked(bool)),this,SLOT(start()));//连接信号
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::start()
{
QProcess* caller = new QProcess(this);//创建对象,指定父类指针
caller->start("G:\\file\\Bar\\x64\\Debug\\Bar.exe");
//或者可以用这种找文件的符号来写
//如果用“\”来作为文件路径分隔符则会找不到文件。
//caller->start("G:/file/Bar/x64/Debug/Bar.exe");
qDebug()<<"this here"<<endl;
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
ui文件中就只有一个toolbutton的按钮,用作启动外界程序。