当前位置:网站首页>Qt实战案例(56)——利用QProcess实现应用程序重启功能
Qt实战案例(56)——利用QProcess实现应用程序重启功能
2022-08-01 12:49:00 【wendy_ya】
一、项目介绍
本文介绍利用QProcess实现应用程序重启功能。实现应用程序重启功能在Qt中实现非常简单,需要用到QProcess类一个静态方法:bool startDetached(const QString &program, const QStringList &arguments);
二、项目基本配置
新建一个Qt案例,项目名称为“RestartTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设置
UI界面如下:
序号 | 名称 | 类型 | 属性 |
---|---|---|---|
① | pbn_restart | QPushButton | text:Restart |
四、主程序实现
4.1 widget.h头文件
声明头文件:
private slots:
void on_pbn_restart_clicked();
定义RETCODE_RESTART:
// define a retcode: 773 = 'r'+'e'+'s'+'t'+'a'+'r'+'t' = restart
static const int RETCODE_RESTART = 773;
4.2 widget.cpp源文件
定义按钮点击槽函数:
//应用程序重启
void Widget::on_pbn_restart_clicked()
{
qApp->exit(RETCODE_RESTART);
}
4.3 main.cpp源文件
在main函数中判断退出码是否为“RETCODE_RESTART”,来决定是否重启:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
//return a.exec();
int e = a.exec();
if(e == RETCODE_RESTART)
{
// 传入 qApp->applicationFilePath(),启动自己
QProcess::startDetached(qApp->applicationFilePath(), QStringList());
return 0;
}
return e;
}
五、效果演示
完整效果如下:
如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/86268703
ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~
边栏推荐
- 如何设计一个分布式 ID 发号器?
- .NET性能优化-使用SourceGenerator-Logger记录日志
- 故障007:dexp导数莫名中断
- The obstacles to put Istio into production and how we solve them
- Js手写函数之new的模拟实现
- Grafana 9.0 released, Prometheus and Loki query builders, new navigation, heatmap panels and more!
- 重磅消息 | Authing 实现与西门子低代码平台的集成
- 软件测试之发现和解决bug
- SAP ABAP OData 服务如何支持创建(Create)操作试读版
- tensorflow2.0 handwritten digit recognition (tensorflow handwriting recognition)
猜你喜欢
蔚来又一新品牌披露:产品价格低于20万
The basic knowledge of scripting language Lua summary
Efficiency tools to let programmers get off work earlier
观察者模式
VINS-mono 论文解读:IMU预积分+Marg边缘化
Based on 10 years of experience in stability assurance, what are the three key questions to be answered in failure recovery?|TakinTalks big coffee sharing
Dameng replaces the officially authorized dm.key
PanGu-Coder:函数级的代码生成模型
全链路灰度在数据库上我们是怎么做的?
多线程案例——阻塞式队列
随机推荐
批量任务导入到数据库中
34、树莓派进行人体姿态检测并进行语音播报
搭建LNMT架构
tensorflow2.0手写数字识别(tensorflow手写体识别)
[Unity3D Plugin] AVPro Video Plugin Share "Video Player Plugin"
程序员的自我修养
Meshlab & Open3D SOR filtering
批量替换Word中的表格为图片并保存
测试发文
字体反爬之好租
postgresql之page分配管理(一)
leetcode: 1201. Ugly Number III [Dichotomy + Mathematics + Inclusion and Exclusion Principle]
Do wildcard SSL certificates not support multiple domains?
消息中间件解析 | 如何正确理解软件应用系统中关于系统通信的那些事?
postgresql之page分配管理(二)
DDL和DML的含义与区别「建议收藏」
bpmn-process-designer基础上进行自定义样式(工具、元素、菜单)
Apex installation error
【StoneDB Class】Introduction Lesson 2: Analysis of the Overall Architecture of StoneDB
Aeraki Mesh Joins CNCF Cloud Native Panorama