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
相关推荐
xiaoye-duck11 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
旖旎夜光12 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
小超人诞生日记13 小时前
C++ 智能指针的使用及其原理详解
c++·算法
akinggw14 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
繁星蓝雨15 小时前
C++设计原理———多重继承(虚基类、菱形继承、委托、重命名、基类和成员初始化)
c++·委托·多重继承·mi·显式初始化列·虚基类·对象布局
旖旎夜光15 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
扶尔魔ocy16 小时前
【QT入门到晋级】用开源的自定义控件开发
c++·qt·自定义控件
akinggw17 小时前
libsherpacore - 基于 sherpa-onnx 的 C++ 语音交互静态库
c++·交互·语音识别
xiaoye-duck17 小时前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
网络·c++·语言模型·chatgpt
東隅已逝,桑榆非晚18 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法