QProcess的简单使用(附有简单实例)

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的按钮,用作启动外界程序。

2.3结果实例

在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值