赞助

Qt 程序重启

工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功

转载:https://blog.csdn.net/xie__jin__cheng/article/details/143990949

转载:https://kernel.blog.csdn.net/article/details/50374563

QtWidgetsApplication1.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"

class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();

    void restart();

private:
    Ui::QtWidgetsApplication1Class ui;
};

QtWidgetsApplication1.cpp

#include "QtWidgetsApplication1.h"
#include <QHBoxLayout>
#include <QProcess>
#include <QDir>
#include <QPushButton>

QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    setWindowTitle(QStringLiteral("123"));

    QHBoxLayout* hBox = new QHBoxLayout();

    QPushButton* btn = new QPushButton("restart", this);
    btn->setGeometry(60, 50, 120, 60);
    connect(btn, &QPushButton::clicked, this, &QtWidgetsApplication1::restart);

    //hBox->addWidget(btn);


    setLayout(hBox);
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{}

void QtWidgetsApplication1::restart()
{
    // 获取当前程序的可执行文件路径
    QString program = QApplication::applicationFilePath();
    // 获取当前程序的命令行参数
    QStringList arguments = QApplication::arguments();
    // 获取当前工作目录
    QString workingDirectory = QDir::currentPath();
    // 启动新进程
    QProcess::startDetached(program, arguments, workingDirectory);
    // 退出当前程序
    QApplication::quit();
}

main.cpp

#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QtWidgetsApplication1 window;
    window.show();
    return app.exec();
}

 

posted @ 2026-09-03 11:55  车臣  阅读(3)  评论(0)    收藏  举报