小项目试验:创建进程链

1.概要

1.基本需求:ubuntu qt c++ 创建两个程序a和b,a启动后,有个按钮点击后,打开b程序,并将a的可执行文件的完整路径传递给b,且把a的程序关闭了, b关闭的时候,依据a传递过来的路径,在把a启动起来。

2.内容

a进程

#include "MainWindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
// ============== 程序A (mainwindow.cpp) ==============
#include <QMainWindow>
#include <QProcess>
#include <QPushButton>
#include <QCoreApplication>

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        QPushButton *btn = new QPushButton("启动程序B", this);
        connect(btn, &QPushButton::clicked, this, &MainWindow::startProgramB);
        resize(200, 100);
    }

private slots:
    void startProgramB() {
        // 获取当前可执行文件完整路径
        QString aPath = QCoreApplication::applicationFilePath();

        QString bPath = "D:\\projects\\qts\\untitled8\\build\\Desktop_Qt_6_7_2_MinGW_64_bit-Debug\\untitled8.exe";
        // 启动程序B并传递参数
        QProcess::startDetached(bPath, {aPath});

        // 关闭当前程序
        QCoreApplication::quit();
    }
};

b程序

// ============== 程序B (main.cpp) ==============
#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
#include <QTimer>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    // 注册退出时的处理
    QObject::connect(&a, &QCoreApplication::aboutToQuit, [&]() {
        if (argc > 1) {
            QString aPath = argv[1];
            qDebug() << "正在重新启动程序A:" << aPath;
            QProcess::startDetached(aPath, {});
        }
    });

    // 模拟程序运行(实际应替换为你的业务逻辑)
    qDebug() << "程序B已启动,3秒后退出...";
    //QTimer::singleShot(3000, &a, &QCoreApplication::quit);

    return a.exec();
}

3.关联链接

4.关联知识

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值