QT笔记 - QProcess读取外部程序(进程)消息

news2024/9/27 9:26:56

简要介绍

QProcess可用于在当前程序中启动独立的外部程序(进程),并进行通讯,通讯原理是通过程序的输入或输出流,即通过c中的printf()和或c++的std::cout等。

函数

  1. void QProcess::start(const QString & program, const QStringList & arguments = {}, OpenMode mode = ReadWrite)
  2. void QProcess::readyReadStandardOutput()
  3. QByteArray QProcess::readAllStandardOutput()
  4. bool QProcess::waitForFinished(int msecs = 30000)

函数说明

  1. 启动目标程序。形参: program:目标程序启动目录,包含程序名称及后缀;arguments:参数,可以向目标程序的main()函数传递两个参数;mode:读写打开模式。
  2. 是个信号函数,目标程序有即时输出时触发,可用于接收目标程序的实时输出
  3. 读取输出
  4. 等待目标程序完成(退出),注意期间主程序会陷入冻结状态。形参:msec:等待时长,注意,该时间到期后将主动关闭目标程序,默认30000毫秒,-1时可无限时长等待。

示例

主程序:

    QProcess process;
    // process.setProcessChannelMode(QProcess::MergedChannels);
    process.start("C:\\myapp\\ProcessTest.exe");

    // 实时读取
    process.connect(&process, &QProcess::readyReadStandardOutput, [&](){
        qDebug() << "main - " << process.readAllStandardOutput();
    });

    if(process.waitForFinished(-1)){
        qDebug() << "main - Process:\"" << process.program() << "\" Finished";
    }


    // // 或目标程序退出后读取全部
    // if(process.waitForFinished(-1)){
    //     qDebug() << "main - " << process.readAllStandardOutput();
    // } else {
    //     qDebug() << "main - 2";
    // }

目标程序:

void Widget::on_pushButton_clicked()
{
    std::cout << "Widget::on_pushButton_clicked - " << ui->lineEdit->text().toStdString() << std::endl;
    std::cout << std::flush;
}

测试结果输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直播美颜SDK开发方案详解:如何打造智能化主播美颜工具?

在竞争激烈的市场环境下&#xff0c;如何通过直播美颜SDK打造智能化的主播美颜工具&#xff0c;已成为技术开发者和产品经理们关注的焦点。本篇文章将从核心技术、开发流程和优化策略等方面&#xff0c;详细解析如何构建一款智能化的主播美颜工具。 一、核心技术解析 1.人脸识…

第10讲 后端2

主要目标&#xff1a;理解滑动窗口法、位姿图优化、带IMU紧耦合的优化、掌握g2o位姿图。 第9讲介绍了以为BA为主的图优化。BA能精确优化每个相机位姿与特征点位置。不过在更大的场景中&#xff0c;大量特征点的存在会严重降低计算效率&#xff0c;导致计算量越来越大&#xff0…

图纸安全管理措施有哪些?这九大措施全方位保护图纸安全

图纸安全管理措施是一个综合性的体系&#xff0c;旨在通过技术手段和管理措施确保图纸的机密性、完整性和可用性。以下是一些关键的图纸安全管理措施&#xff0c;以及软件安企神的应用。 一、保密协议与意识教育 签订保密协议&#xff1a;与所有接触图纸的员工签署保密协议&am…

计算方法——插值法程序实现二(牛顿法)

例题 给出的函数关系表&#xff0c;分别利用牛顿插值法计算的近似值。 0.10.20.30.40.51.1051711.2214031.3498591.4918251.648721 参考代码一&#xff1a;Python代码实现&#xff08;自编码&#xff09; import math """ :difference_quotient差商函数 &quo…

基于AppBuilder自定义组件开发大模型应用

AppBuilder简介&#xff1a; 如果大家不了解AppBuilder的话&#xff0c;可以先到这里了解一下&#xff1a; https://cloud.baidu.com/doc/AppBuilder/s/6lq7s8lli 一句话简介&#xff1a; 千帆AppBuilder&#xff08;以下简称AppBuilder&#xff09;是基于大模型搭建AI原生应…

MySQL进阶篇2

三、SQL优化 3.1 插入数据 批量插入推荐每次在 500 ~ 1000 条数据时进行使用。如果大于1000&#xff0c;可以考虑分批次进行插入。 大批量插入数据(100万、1000万) 主键顺序插入的性能比乱序要高 3.2 主键优化 数据组织方式 页分裂 主键顺序插入 主键乱序插入 页合并 (del…

计算机网络-VRRP工作原理

一、VRRP工作原理 前面我们大概了解了VRRP的一些基础概念&#xff0c;现在开始学习VRRP的技术原理。VRRP的选举及工作步骤&#xff1a; 确定网关地址 选举主备 主设备发送VRRP报文通知Backup设备 主设备响应终端ARP并维持在Master状态 终端正常发送报文到网关进行转发 因为我们…

计算机毕业设计Hadoop+PySpark共享单车预测系统 PyHive 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

《Hadoop共享单车分析与预测系统》开题报告 一、课题背景与意义 1.1 课题背景 随着共享经济的快速发展&#xff0c;共享单车作为一种新型绿色环保的共享经济模式&#xff0c;在全球范围内迅速普及。共享单车通过提供便捷的短途出行服务&#xff0c;有效解决了城市居民出行的…

网络安全服务基础Windows--第9节-DNS部署与安全

域名基础知识 域名是互联⽹上⽤来识别各种实体&#xff08;如服务器、服务、⽹络&#xff09;的可读名称。它是⼀种⽅便记忆的地址&#xff0c;⽤于代替IP地址&#xff0c;因为IP地址由数字组成&#xff0c;不容易记忆。域名通过⼀种层级结构的系统组织起来&#xff0c;从最⼀ …

以人口金字塔图为例,在线绘制左右双侧堆叠条形图

导读&#xff1a; 人口金字塔&#xff08;population pyramids&#xff09;用于展示一个特定人口的年龄和性别分布。本质上是一种水平条形图。左侧是男性的数据&#xff0c;右侧是女性的数据。 Proc Natl Acad Sci U S A.文章《Demographic change and assimilation in the ea…

电脑实时监控软件分享!一分钟速览,五个好用的实时屏幕监控软件(良心推荐)

"工欲善其事&#xff0c;必先利其器。"在信息化时代&#xff0c;企业管理的高效与安全离不开先进的工具支持。 电脑实时监控软件已是现代企业管理的重要利器&#xff0c;不仅能帮助管理者实时掌握员工的工作状态&#xff0c;还能有效防止数据泄露&#xff0c;确保信…

FLV封装H265

针对FLV格式&#xff0c;目前许多开源项目和常见的视频处理工具和流媒体服务器&#xff0c;仍主要支持H.264视频编码格式&#xff0c;尚未完全兼容H.265。ffmpeg和vlc都不支持H265编码格式的FLV&#xff0c;不知道后续版本会不会支持。RTMP也是用FLV格式传输音视频&#xff0c;…

CPP继承(下)

目录 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 单继承 多继承 菱形继承 菱形继承的问题 虚继承 虚拟继承解决数据冗余和二义性的原理 继承的总结和反思 笔试面试题 继承与友元 友元关系不能继承&#xff0c;也就是说基类友元不能访问子类私有和保护…

淘宝扭蛋机小程序开发,吸引更多的消费者

随着互联网科技的快速发展&#xff0c;小程序已经成为了一个必不可少的发展趋势。小程序具有门槛低、曝光度高、方便的优势&#xff0c;能够满足消费者的需求&#xff0c;还可以为企业商家带来更多的影响力&#xff0c;因此&#xff0c;扭蛋机小程序也成为了市场发展的重要力量…

Linux网络编程:守护进程

目录 1.会话 2.守护进程的特点 3.如何将一个进程变成守护进程 1.会话 在Linux下一个会话就是 终端文件 bash&#xff0c;会话就是人类和计算机沟通的窗口和解释器。 可以在xshell中新建立一个会话验证一下。 复制会话 使用 ls /dev/pts 命令&#xff0c;查看有几个终端文…

(Lane Deteciton-1)PersFormer

介绍 在自动驾驶中&#xff0c;下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图&#xff08;BEV&#xff09;而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理&#xff08;如车辆、道路标志、交通灯等&#xff09;对齐任务&#xff0c;并且与其他传…

tomato靶场通关

1、使用nmap扫描C段查找网址 2、使用dirb扫描目录 3、打开网站查看目录 4、发现一个info.php文件查看 5、查看源代码&#xff0c;发现文件包含漏洞 6、查看etc/passwd &#xff0c;查看日志 7、写入一句话木马 8、使用蚁剑进行连接查看&#xff0c;可以使用终端

Vue 3 组合式 API

相比较 Vue.js 2.x 版本传统的方法组织形式&#xff0c; Vue.js 3.x 提出了组合式 API 的格式。本 章带领读者系统学习 Vue.js 3.x 新增的有关组合式 API 的知识。 本章主要涉及到如下知识。 组合式 API 与选项式 API 的语法区别。 在组合式 API 中使用生命周期…

从监控到智能:EasyCVR视频汇聚平台助力加油站安全监管升级转型

随着科技的不断进步&#xff0c;视频监控技术在各个行业的应用日益广泛&#xff0c;尤其在加油站这一关键领域&#xff0c;视频智能监管系统的应用显得尤为重要。TSINGSEE青犀视频EasyCVR视频汇聚平台作为一款基于“云-边-端”一体化架构的视频融合与AI智能分析平台&#xff0c…

guava中对Map的扩展数据结构

Multimap - 多值Map guava中的Multimap提供了将一个键映射到多个值的形式&#xff0c;使用起来无需定义复杂的内层集合&#xff0c;可以像使用普通的Map一样使用它&#xff0c;定义及放入数据如下&#xff1a; Multimap<String, Integer> multimap ArrayListMultimap.…