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

采用qt做一个命令行终端

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的这个功能代码会少三分之一左右,就是有点难以读懂。

如果做Windows上的不错的终端软件,还是建议学习qtcreator这个功能模块代码吧,毕竟已经做得不错了,可以参考的。

相关文章:

采用qt做一个命令行终端

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

TQA相关

ReAct Prompting: 原理、实现与应用 ReAct Prompting(推理与行动提示)是一种引导大型语言模型(LLM)进行推理和行动的策略,广泛应用于复杂问题求解、对话生成和自动化任务等领域。ReAct Prompting 通过将模型的思考过程…...

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…...

[Web安全 网络安全]-文件上传漏洞

文章目录&#xff1a; 一&#xff1a;前言 1.什么是文件上传漏洞 2.环境 2.1 靶场 2.2 其他工具 3.木马分类 二&#xff1a;文件上传分类 1.客户端 JS绕过 2.服务端-黑名单 大小写绕过 点和空格绕过 .htaccess文件绕过 php345文件绕过 windows ::$DATA绕过 3.…...

【白话Redis】缓存雪崩、穿透、击穿、失效和热点缓存重建

快速导航 Redis不可不知的故障现象一、缓存雪崩定义&#xff1a;解决方案&#xff1a; 二、缓存穿透定义&#xff1a;解决方案一&#xff1a;解决方案二&#xff08;更普遍的做法&#xff09;&#xff1a; 三、缓存击穿定义&#xff1a;解决方案&#xff1a; 四、缓存失效Redis…...

flink增量检查点降低状态依赖实现的详细步骤

增量检查点启动恢复的时间是很久的&#xff0c;业务上不能接受&#xff0c;所以可以通过降低状态依赖来减少恢复的时间。 降低状态依赖 尽可能减少状态的复杂性和依赖关系&#xff0c;通过拆分状态或将状态外部化到其他服务中&#xff0c;从而降低恢复的开销。 实施措施&…...

Redis总结,是什么,干什么,怎么利用?

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;常用于缓存、消息队列、会话存储等应用场景 Redis主要特性 &#xff08…...

Vue3状态管理Pinia

Vue3 的 Pinia 使用指南 Pinia 是 Vue3 中官方推荐的状态管理库&#xff0c;作为 Vuex 的替代品&#xff0c;它更简洁易用&#xff0c;并且支持模块化、类型推断和 DevTools 集成。Pinia 非常适合在 Vue3 项目中管理全局状态。 1. 安装 Pinia 首先&#xff0c;我们需要在 Vu…...

box64 安装

ARM运行x86程序 docker安装 box64 安装方法 docker run --name a001 -itd --networkhost -v /www/wwwroot/docker/Box64/f:/f ubuntu:22.04 /bin/bash docker exec -it a001 bash cd /home //创建目录qq547176052 mkdir -p qq547176052 cd /home/qq547176052 apt update apt …...

OpenCV通过鼠标提前ROI(C++实现)

文章目录 鼠标绘制矩形提取ROI任意形状绘制提前ROI 废话不多说&#xff0c;直接上代码 鼠标绘制矩形提取ROI #include <iostream> #include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp>us…...

6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)

目录 一.堆(Heap)的基本介绍 二.堆的常用操作&#xff08;以小根堆为例&#xff09; 三.实现代码 3.1 堆结构定义 3.2 向下调整算法* 3.3 初始化堆* 3.4 销毁堆 3.4 向上调整算法* 3.5 插入数据 3.6 删除数据 3.7 返回堆顶数据 四.下篇内容 1.堆排序 2.TopK问题 一…...

【智能终端】HBuilder X 与微信开发者工具集成与调试实战

目录 1. 需求和理解库、框架、平台 1.1 需求 1.2 理解 2.3 库、框架、平台 2.3.1 库&#xff08;Library&#xff09; 2.3.2 框架&#xff08;Framework&#xff09; 2.3.3 平台&#xff08;Platform&#xff09; 2.3.4 总结 2. 使用 HBuilder X 创建第一个 uni-app 应…...

结构体的字节对齐方式(__attribute_pack(packed))#pragma pack())

结构体的字节对齐方式&#xff08;__attribute_pack(packed))&#pragma pack()) 1、编译器的字节对齐方式 当前编译器都有默认的字节对齐方式&#xff0c; struct PackedStruct {char a;int b;short c; };如上代码段中的结构体&#xff0c;在编译运行后发现他的大小并不…...

若依Ruoyi之智能售货机运营管理系统(新增运营运维工单管理)

idea抽取独立方法快捷键&#xff1a;ctrlaltm TaskDto.java package com.dkd.manage.service.impl;import java.time.Duration; import java.util.List; import java.util.stream.Collectors;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUti…...

ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决

问题 ModuleNotFoundError: No module named keras.layers.core&#xff0c;如图所示&#xff1a; 如何解决 将from keras.layers.core import Dense,Activation改为from tensorflow.keras.layers import Dense,Activation&#xff0c;如图所示&#xff1a; 顺利运行&#xf…...

C++(三)----内存管理

1.C/C内存分布 看下面这个问题&#xff08;考考你们之前学的咋样&#xff09;&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pCh…...

使用 ShuffleNet 模型在 CIFAR-100 数据集上的图像分类

简介 在深度学习领域&#xff0c;图像分类任务是衡量算法性能的重要基准。本文将介绍我们如何使用一种高效的卷积神经网络架构——ShuffleNet&#xff0c;来处理 CIFAR-100 数据集上的图像分类问题。 CIFAR-100 数据集简介 CIFAR-100 数据集是一个广泛使用的图像分类数据集&…...

怎么利用短信接口发送文字短信

在当今这个快节奏的数字时代&#xff0c;即时通讯已成为人们日常生活和工作中不可或缺的一部分。而短信接口&#xff08;SMS Interface&#xff09;&#xff0c;作为传统与现代通讯技术结合的典范&#xff0c;凭借其高效、稳定、广泛覆盖的特性&#xff0c;在众多领域发挥着不可…...

【C#生态园】提升C#开发效率:掌握这六款单元测试利器

从xUnit到SpecFlow&#xff1a;C#测试驱动开发全指南 前言 在C#开发中&#xff0c;单元测试和模拟框架是至关重要的工具&#xff0c;它们可以帮助开发人员确保代码的质量和可靠性。本文将介绍一些常用的C#单元测试框架和相关库&#xff0c;包括xUnit、NUnit、Moq、FluentAsse…...

【QT】自制一个简单的小闹钟,能够实现语音播报功能

做了一个自制的小闹钟&#xff0c;能够自己输入时间&#xff0c;以及对应的闹铃&#xff0c;时间到了自动播放设定的闹铃&#xff0c;可以随时取消重新设定&#xff0c;采用分文件编译 注意&#xff1a;需要在.pro文件中加入&#xff1a;QT core gui texttospeech 代码…...

30 分钟搞定答辩 PPT!Paperxie AI 生成器:拯救论文人的「熬夜克星」

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、答辩 PPT 惨案现场&#xff1a;你是不是也在为这四件事崩溃&#xff1f; 论文查重通过的那一刻&#xff0c;你以为终于能…...

[特殊字符] Nano-Banana部署教程:Ubuntu/CentOS环境下的镜像拉取与启动

Nano-Banana部署教程&#xff1a;Ubuntu/CentOS环境下的镜像拉取与启动 1. 项目简介 Nano-Banana是一款专门为产品拆解和平铺展示风格设计的轻量级文本生成图像系统。这个项目的核心在于深度融合了Nano-Banana专属的Turbo LoRA微调权重&#xff0c;专门针对Knolling平铺、爆炸…...

需要控制重复点击按钮的通用方法

如图所示 在需要控制重复点击的地方使用通用方法去控制 省时省力 比用传统的分页定时器更方便...

Canvas Quest跨平台部署实践:从星图GPU到本地环境的迁移

Canvas Quest跨平台部署实践&#xff1a;从星图GPU到本地环境的迁移 1. 前言&#xff1a;为什么需要跨平台部署 最近遇到不少开发者朋友在问同一个问题&#xff1a;在星图GPU平台上跑得好好的Canvas Quest模型&#xff0c;怎么迁移到本地环境就各种报错&#xff1f;这其实是个…...

Qwen3-ForcedAligner-0.6B在语音克隆中的应用:精准音素对齐技术

Qwen3-ForcedAligner-0.6B在语音克隆中的应用&#xff1a;精准音素对齐技术 1. 引言 你有没有遇到过这样的情况&#xff1a;用语音克隆技术生成的声音&#xff0c;听起来总感觉哪里不对劲&#xff1f;可能是某个字的发音时长不对&#xff0c;或者是词语之间的停顿不自然。这些…...

QRCoder:开发者必备的二维码生成解决方案全攻略

QRCoder&#xff1a;开发者必备的二维码生成解决方案全攻略 【免费下载链接】QRCoder A pure C# Open Source QR Code implementation 项目地址: https://gitcode.com/gh_mirrors/qr/QRCoder 在数字化时代&#xff0c;二维码已成为信息传递的重要桥梁&#xff0c;但如何…...

收藏必备!小白程序员快速入门RAG,轻松提升大模型生成效果与准确性

RAG&#xff08;检索增强生成&#xff09;是一种提升大模型生成内容准确性和时效性的技术框架。通过从外部知识库检索信息&#xff0c;再将检索结果与大模型结合&#xff0c;有效解决大模型知识过时和幻觉问题。RAG流程包括知识嵌入存储、相似度检索和增强生成三个核心环节&…...

OOM线上问题排查

场景&#xff1a; 项目中有一个接口&#xff0c;会进行全表查询&#xff0c;查出来3万条&#xff0c;查一次不会导致oom&#xff0c;但是频繁调用这个接口&#xff0c;上一次调用还没有来得及进行垃圾回收&#xff0c;下一次接口调用又来了&#xff0c;又有3万条数据&#xff0…...

2026年,市面上正规SSL证书品牌众多,哪家才是真正专业之选?

在当今数字化时代&#xff0c;网络安全至关重要&#xff0c;SSL证书作为保障网站安全的关键工具&#xff0c;其重要性不言而喻。2026年&#xff0c;市面上正规的SSL证书品牌众多&#xff0c;企业在选择时往往会感到困惑。本文将为大家分析如何选择专业的SSL证书品牌&#xff0c…...

4个关键步骤:用vscode-ai-toolkit实现智能应用开发全流程

4个关键步骤&#xff1a;用vscode-ai-toolkit实现智能应用开发全流程 【免费下载链接】vscode-ai-toolkit 项目地址: https://gitcode.com/GitHub_Trending/vs/vscode-ai-toolkit AI Toolkit for Visual Studio Code是一款专为简化生成式AI应用开发设计的强大VS Code扩…...