当前位置: 首页 > news >正文

QT交互界面:实现按钮运行脚本程序

一.所需运行的脚本

        本篇采用上一篇文章的脚本为运行对象,实现按钮运行脚本

        上一篇文章:从0到1:QT项目在Linux下生成可以双击运用的程序(采用脚本)-CSDN博客

二.调用脚本的代码

widget.cpp中添加以下代码

#include "widget.h"
#include "./ui_widget.h"
#include <QMessageBox>
#include <QProcess>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton_test, &QPushButton::clicked, this, &Widget::on_pushButton_test_clicked);
}void Widget::on_pushButton_test_clicked()
{QString strCmd = "/home/popo/double_click_test/jiao";QProcess process;process.start("bash", QStringList() << "-c" << strCmd);if (process.waitForStarted()){qDebug() << "Process started successfully.";if (process.waitForFinished()){QByteArray result = process.readAllStandardOutput(); // 读取脚本的输出QByteArray error = process.readAllStandardError(); // 读取错误输出qDebug() << "Script output:" << result;qDebug() << "Script error output:" << error;}else{qWarning() << "Failed to execute script";}}else{qWarning() << "Failed to start script execution";}process.close();
}

三.代码解析

启动进程

process.start("bash", QStringList() << "-c" << strCmd);

检查进程是否成功启动

if (process.waitForStarted())

等待进程执行完成 

再次使用 waitForFinished,等待进程执行完成。如果成功,返回 true

进程提示信息

    if (process.waitForStarted()){qDebug() << "Process started successfully.";if (process.waitForFinished()){QByteArray result = process.readAllStandardOutput(); // 读取脚本的输出QByteArray error = process.readAllStandardError(); // 读取错误输出qDebug() << "Script output:" << result;qDebug() << "Script error output:" << error;}else{qWarning() << "Failed to execute script";}}else{qWarning() << "Failed to start script execution";}

关闭进程 

process.close();

四.效果展示

http://www.lryc.cn/news/472299.html

相关文章:

  • 驱动和芯片设计哪个难
  • 【云原生】云原生后端:监控与观察性
  • 在 ubuntu20.04 安装 docker
  • 前端开发设计模式——观察者模式
  • 永磁同步电机高性能控制算法(17)——无差拍预测转速控制
  • 【GIT】Visual Studio 中 Git 界面中, 重置 和 还原
  • 开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码
  • 【electron+vue3】使用JustAuth实现第三方登录(前后端完整版)
  • Amcor 如何借助 Liquid UI 实现SAP PM可靠性
  • 【Redis】常见基本全局命令
  • 探索国际数据空间(IDS)架构(上)
  • 如何选择好用的U盘数据恢复软件免费版?2024年热门榜单有哪些?
  • 音视频入门基础:AAC专题(12)——FFmpeg源码中,解码AudioSpecificConfig的实现
  • UDP组播测试
  • 【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案
  • 504 Gateway Time-outopenresty
  • SpringBoot篇(自动装配原理)
  • 《Web性能权威指南》-WebRTC-读书笔记
  • 跨境电商独立站:打造你的全球品牌
  • 基于uniapp微信小程序的旅游系统
  • 怿星科技薛春宇丨智能汽车软件研发工具链国产化的挑战和探索
  • Flutter动画渐变
  • Python毕业设计选题:基于Web学生会网站的设计与实现-django
  • 如何选购高性价比百元头戴式耳机?六大选购技巧加性价比耳机推荐
  • Java爬虫的京东“寻宝记”:揭秘商品类目信息
  • React前端框架
  • React-query vs. 神秘新工具:前端开发的新较量
  • TensorFlow面试整理-分布式
  • OceanBase 回收站机制详解
  • Java特工队:潜入京东,高效获取商品详情的绝密行动