Qt中打开另外一个进程之QProgress

有时候不同的功能做成了几个不同exe,这个时候需要在一个进程中启动另一个exe,这个时候就需要用到QProgress

异步启动

cpp 复制代码
//参数1:程序全路径
//参数2:启动参数
//参数3:打开方式。使用默认的就行
void QProcess::start(const QString &program, const QStringList &arguments = {}, QIODeviceBase::OpenMode mode = ReadWrite)

同步启动

cpp 复制代码
//静态方法
//参数1:程序的全路径
//参数2:启动参数
//返回值:返回-1表示无法启动,返回-2表示程序崩溃
[static] int QProcess::execute(const QString &program, const QStringList &arguments = {})

举例:

启动记事本

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QProcess>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr): QWidget(parent)
    {
        resize(500,400);
        QPushButton* btn_open_notepad=new QPushButton("打开记事本",this);
        btn_open_notepad->setGeometry(10,10,100,50);
        connect(btn_open_notepad,&QPushButton::clicked,this,[=](){
            //传入路径(环境变量可以找到)或绝对路径,直接调用QProcess的start方法,异步
            myprocess.start("notepad.exe");
            //或者execute方法,同步
            //QProcess::execute("notepad.exe");

        });


        QPushButton* btn_open_cmd=new QPushButton("打开cmd",this);
        btn_open_cmd->setGeometry(10,btn_open_notepad->geometry().bottom()+10,100,50);
        connect(btn_open_cmd,&QPushButton::clicked,this,[=](){
            myprocess.start("C:/windows/system32/cmd.exe",{"/c dir&pause"});//还可以在启动的时候传递参数给被启动的进程
            //可以获取到这个进程的输出,每当有输出时,QProcess会发出readyRead的信号
        });
        connect(&myprocess,&QProcess::readyRead,this,[=](){
            qDebug()<<QString(myprocess.readAll());
        });
    }
    ~Widget()=default;
private:
    QProcess myprocess;
};
#endif // WIDGET_H
相关推荐
cch891810 分钟前
易语言与C++:编程语言终极对决
开发语言·c++
HABuo13 分钟前
【linux线程(三)】生产者消费者模型(条件变量阻塞队列版本、信号量环形队列版本)详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
小肝一下42 分钟前
每日两道力扣,day2
c++·算法·leetcode·职场和发展
读书札记20222 小时前
Qt Creator使用cmake添加资源文件(.qrc)
qt
CheerWWW3 小时前
C++学习笔记——this关键字、对象生命周期(栈作用域)、智能指针、复制与拷贝构造函数
c++·笔记·学习
lucky九年3 小时前
GO语言模拟C++封装,继承,多态
开发语言·c++·golang
tycooncool3 小时前
QT数据库(三):QSqlQuery使用
数据库·qt·oracle
漫随流水3 小时前
c++编程:D进制的A+B(1022-PAT乙级)
数据结构·c++·算法
tankeven3 小时前
HJ159 没挡住洪水
c++·算法
charlie1145141914 小时前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(5):调试进阶篇 —— 从 printf 到完整 GDB 调试环境
linux·c++·单片机·学习·嵌入式·c