采用qt做一个命令行终端

embedded/2024/11/15 1:58:56/

qt做一个类似系统命令行终端的工具,方便集成到自己的软件里使用,这样能保证软件的整体性,而且是真正的做到和系统命令行终端一样的交互方式,而不是单独搞个编辑框的方式输入命令(大部分博客都是做成这个样子),有3个方法:

1. 用推荐比较多的开源库QTermWidget(注意,好像只能在linux上编译运行,不支持windows的,我搞了一下windows反正不行)

GitHub - lxqt/qtermwidget: The terminal widget for QTerminal

但是网上好像使用例程比较少,自己可以琢磨琢磨。

这里分析一下类继承关系:(相关功能代码约 1万行左右

2. qtcreator自己有一项插件就支持命令行终端功能

做得还挺好的,如下图:

所以,我们可以学习借鉴 qtcreator 源码中关于这个终端的实现代码呀。首先,我们需要下载qtcreator的源码:Index of /snapshots/qtcreator/14.0/14.0.2/installer_source/218 (https://download.qt.io/snapshots/qtcreator/14.0/14.0.2/installer_source/218/)

注意:版本得13以上,才有这个功能。

然后,我们用qtcreator打开这个下载的qtcreator源码,终端功能模块源码路径如下:

src -> plugins -> terminal

也就是说,终端功能模块是以插件存在的,我们可以动态加载和去掉该功能,在qtcreator的帮助然后关于插件菜单里就能加载和去掉该插件了,然后界面中就不显示该功能了。

这里简单分析一下qtcreator这个终端功能模块的源码文件以及类继承关系:(约7000行代码左右,不包括引用qt一些其它第三方引用库代码(没注意看有没有引用到))

界面组成:

具体类继承关系:

3. 不像前面两个一样后台交互的是操作系统的shell本质,而是后台和操作系统本身的终端例如windows的cmd 进行交互,就是负责喂数据读数据显示,网上大部分博客都是这样干的,但是没法传递ctrl+c这样的按键给终端实现退出进程,但是这是一种最简单能实现的方式了吧,但是功能是受限的,有点像个玩具软件。

 4. 总结

特点分析:QTermWidget开源库里面的代码注释丰富,使用语法比较简单易懂,阅读起来比较轻松。然而只能用于linux系统编译通过(因为我看头文件依赖Linux系统头文件,而且还不是宏控制编译的,所以人家就没打算支持windows系统使用的),反正就是windows上难以用上。而qtcreator的这个功能代码会少三分之一左右,就是有点难以读懂,此外,还有个特么困难的问题,就是依赖了太多qtcreator核心源码的文件,导致这个插件几乎抽离不出来(我尝试了一下,实在没法弄),这就跟从Linux驱动源码里抽出一个目标驱动源码到单片机上进行裸机运行一样困难(Linux驱动开发那套框架其实也就是一种插件机制嘛),因为它这个开发框架,决定了插件源码特别困难移植到其它平台或者裸运行了。

如果做Windows上的不错的终端软件,说实话目前还不知道怎么做比较好了,大家有知道的,评论区告诉我吧,谢谢!


http://www.ppmy.cn/embedded/113061.html

相关文章

将硬盘的GPT 转化为MBR格式

遇到的问题 在重新安装系统时,磁盘遇到无法空间分配给系统。 解决方式 使用Windows10镜像 U盘安装,选择磁盘时,转换磁盘格式为MBR。然后退出安装程序。 Shift F10# 输入 diskpart# 查看磁盘信息 list disk# 选择需要转换的磁盘&#xff0…

单机快速部署开源、免费的分布式任务调度系统——Apache DolphinScheduler

本文主要为大家介绍Apache DolphinScheduler的单机部署方式,方便大家快速体验。 环境准备 需要Java环境,这是一个老生常谈的问题,关于Java环境的安装与配置期望大家都可以熟练掌握。 验证java环境 java -version 下载安装包并解压 使用wg…

uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等

记录一下uniapp发布苹果IOS的流程。 一、苹果开发者公司账号申请 1、邓白氏编码申请(先申请公司邓白氏编码,这一步需要1-2周,没有这个编码苹果开发者没法申请,已有编码的跳过此步骤): 1)联系苹…

Mac OS系统如何下载安装Python解释器

目录 Mac安装Python的教程 mac下载并安装python解释器 如何下载和安装最新的python解释器 访问python.org(受国内网速的影响,访问速度会比较慢,不过也可以去我博客的资源下载) 打开历史发布版本页面 进入下载页 鼠标拖到页面…

MobaXterm : Network error: Connection refused(连接被拒绝)

具体报错如下如所示: 首先进行问题排查 ① 检查SSH服务是否运行 sudo service ssh status ② 检查SSH服务是否已启动(启用返回 enable) sudo systemctl is-enabled ssh ③ 查看所有的端口 sudo netstat -tulnp ④ 查看SSH使用的22号端口有…

基于SpringBoot+Vue+MySQL的招聘管理系统

系统展示 用户前台界面 管理员后台界面 企业后台界面 系统背景 在当今数字化转型的大潮中,企业对于高效、智能化的人力资源管理系统的需求日益增长。招聘作为人力资源管理的首要环节,其效率与效果直接影响到企业的人才储备与竞争力。因此,构建…

常用的运维工具:SSH和远程连接工具详解

在现代信息技术(IT)运维中,远程连接工具是运维工程师日常工作中不可或缺的工具。通过这些工具,运维工程师可以远程管理和维护服务器,确保系统的稳定运行。本文将详细介绍SSH(Secure Shell)和其他…

本科生如何学习机器学习

一、入门阶段 1. 数学与统计学基础 高等数学:学习微积分、极限、级数等基本概念。线性代数:掌握矩阵运算、特征值和特征向量、线性方程组等。概率论与统计学:理解概率分布、假设检验、贝叶斯定理等统计知识。 2. 编程语言学习 Python&…