最新要闻
- 中国五大淡水湖是哪五个?中国五大淡水湖从大到小排列
- 上海世博会的吉祥物叫什么名字?上海世博会的意义有哪些?
- 卢知宣是哪个组合的歌手?卢知宣个人资料
- 世界热推荐:佳能一口气推四款新品:EOS R8、EOS R50都来了
- 爽口弹牙 喜得佳潮汕牛肉丸/牛筋丸19.9元/斤官方大促
- 今年以来最大震级!土耳其7.8级地震现场实拍:房屋倒塌满街狼藉
- 环球观天下!浙大美女老师火了 曾是羽毛球冠军 选课人数远超班级容量
- 环球今热点:旧手机被换菜刀女子开80公里赎回 内含资料太珍贵:型号是小米
- 200M内存就能用 Win11极限精简版实测:C盘只需8GB空间
- 手机预装App无法卸载是对用户侵害!人大教授:侵犯消费者自主选择权
- 焦点速讯:男子礁石上钓鱼被海浪拍进石缝 出海垂钓别选偏僻海域
- 特斯拉辅助驾驶不“看路” 撞碎一地护栏!车主:跟平时不一样
- 6999元 惠普新款32寸4K显示器上架:配备雷电4 100W供电
- 俄罗斯杀毒软件卡巴斯基将推自研OS及应用商店:不兼容第三方系统
- 全球热议:要钱没用!比尔盖茨喊话马斯克做慈善家:我们财富都捐出去
- 中国游客抛弃日韩后!新西兰首发团26000元1分钟售罄:出境游全面开启
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界观天下!项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
【资料图】
需求
在Qt软件中实现部分终端控制命令行功能,使软件内可以又好的模拟终端控制,提升软件整体契合度。
Demo演示
运行包下载地址:
CSDNf粉丝0积分下载:https://download.csdn.net/download/qq21497936/87418829 QQ群:博客首页扫码进入技术群,点击“文件”搜索“terminator”,群内与博文同步更新)
功能描述 v1.0.0
- windows版本打开即可实时现实;
- centOS打开抓不到默认的输出只能抓到命令执行的输出结果;
- ubuntu等其他linux-arm没有测试;
- 可以执行单条指令;
- 可以清空模拟ctrl+c结束正在操作的命令;
项目模块化部署
源码
TerminatorWidget.h
#ifndef TERMINATORWIDGET_H#define TERMINATORWIDGET_H#include #include #include #include "TerminatorManager.h"namespace Ui {class TerminatorWidget;}class TerminatorWidget : public QWidget{ Q_OBJECTpublic: explicit TerminatorWidget(QWidget *parent = 0); ~TerminatorWidget();protected: void initControl();protected slots: void slot_recvData(QByteArray byteArray); void slot_recvDataError(QByteArray byteArray);private slots: void on_pushButton_exec_clicked(); void on_pushButton_stop_clicked(); void on_pushButton_clear_clicked();private: Ui::TerminatorWidget *ui;private: QThread *_pTerminatorManagerThread; TerminatorManager * _pTerminatorManager;};#endif // TERMINATORWIDGET_H
TerminatorManager.h
#ifndef TERMINATORMANAGER_H#define TERMINATORMANAGER_H#include #include #include class TerminatorManager : public QObject{ Q_OBJECTpublic: explicit TerminatorManager(QObject *parent = 0);public: bool getRunning() const; void wirte(QByteArray byteArray); void stop(); void ctrlC();signals: void signal_recvData(QByteArray byteArray); void signal_recvDataError(QByteArray byteArray);public slots: void slot_start(); void slot_stop();protected: void initControl();protected slots: void slot_stateChanged(QProcess::ProcessState newState); void slot_readyReadStandardOutput(); void slot_readyReadStandardError(); void slot_write(QByteArray byteArray); void slot_ctrlC();private: bool _running; // 是否运行 QProcess *_pProcess; // 进程 QTextCodec *_pTextCodec; // 编码,读取数据转化编码时用};#endif // TERMINATORMANAGER_H
TerminatorManager.cpp
#include "TerminatorManager.h"#include #include //#define LOG qDebug()<<__FILE__<<__LINE__//#define LOG qDebug()<<__FILE__<<__LINE__<<__FUNCTION__//#define LOG qDebug()<<__FILE__<<__LINE__<start("cmd"); _pProcess->waitForStarted();#else// _pProcess->start("bash"); _pProcess->start("sh"); _pProcess->waitForStarted();#endif } _running = true;}void TerminatorManager::slot_stop(){ if(!_running) { LOG << "It"s not running!!!"; return; } if(_pProcess) { _pProcess->kill(); _pProcess->close(); _pProcess->waitForFinished(); _pProcess->deleteLater(); _pProcess = 0; } _running = false;}void TerminatorManager::initControl(){ // linux下有可能获取失败 _pTextCodec = QTextCodec::codecForName("System");}void TerminatorManager::slot_stateChanged(QProcess::ProcessState newState){ LOG << newState;}void TerminatorManager::slot_readyReadStandardOutput(){ QByteArray byteArray = _pProcess->readAllStandardOutput();// QByteArray byteArray = _pProcess->readAll(); QString str; // 转换为unicode if(_pTextCodec) { str = _pTextCodec->toUnicode(byteArray); }else{ str = QString(byteArray); } emit signal_recvData(str.toUtf8());}void TerminatorManager::slot_readyReadStandardError(){ QByteArray byteArray = _pProcess->readAllStandardError(); QString str; // 转换为unicode if(_pTextCodec) { str = _pTextCodec->toUnicode(byteArray); }else{ str = QString(byteArray); } emit signal_recvDataError(str.toUtf8());}void TerminatorManager::slot_write(QByteArray byteArray){ if(!_pProcess) { LOG << "Is"t not running"; return; } LOG << QString(byteArray); LOG << _pProcess; _pProcess->write(byteArray); LOG;}void TerminatorManager::slot_ctrlC(){ if(!_running) { LOG << "It"s not running!!!"; return; } slot_stop(); slot_start();}
工程模板
-
世界观天下!项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
需求在Qt软件中实现部分终端控制命令行功能,使软件内可以又好的模拟终端控制,提升软件整体契合度。Dem...
来源: 世界观天下!项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
环球看热讯:C#判断IP地址是否正确
中国五大淡水湖是哪五个?中国五大淡水湖从大到小排列
上海世博会的吉祥物叫什么名字?上海世博会的意义有哪些?
卢知宣是哪个组合的歌手?卢知宣个人资料
世界热推荐:佳能一口气推四款新品:EOS R8、EOS R50都来了
爽口弹牙 喜得佳潮汕牛肉丸/牛筋丸19.9元/斤官方大促
今年以来最大震级!土耳其7.8级地震现场实拍:房屋倒塌满街狼藉
环球观天下!浙大美女老师火了 曾是羽毛球冠军 选课人数远超班级容量
环球今热点:旧手机被换菜刀女子开80公里赎回 内含资料太珍贵:型号是小米
NutUI 4.0 正式发布!
200M内存就能用 Win11极限精简版实测:C盘只需8GB空间
手机预装App无法卸载是对用户侵害!人大教授:侵犯消费者自主选择权
焦点速讯:男子礁石上钓鱼被海浪拍进石缝 出海垂钓别选偏僻海域
特斯拉辅助驾驶不“看路” 撞碎一地护栏!车主:跟平时不一样
6999元 惠普新款32寸4K显示器上架:配备雷电4 100W供电
俄罗斯杀毒软件卡巴斯基将推自研OS及应用商店:不兼容第三方系统
全球热议:要钱没用!比尔盖茨喊话马斯克做慈善家:我们财富都捐出去
中国游客抛弃日韩后!新西兰首发团26000元1分钟售罄:出境游全面开启
读Java实战(第二版)笔记02_行为参数化Lambda表达式
全球速讯:男子油锅炸元宵现场惨烈 发生自爆崩起半米高:科普为何会翻车
天天头条:中国探月四期全面推进:月球上寻找水源、科研站基本成型
【全球新视野】Intel Arc 750新驱动提升43%游戏性能!RTX 3060最大劲敌来了
【全球播资讯】day02-REST和SpringMVC映射请求数据
万元起步?苹果iPhone 16将推Ultra超旗舰 库克称果粉愿意花高价
存储卡/U盘提示要格式化?先恢复出数据再说
【全球新要闻】2600元的PCIe 5.0 SSD全球首测:读写双破10GB/s!但吵死了
邪恶、丑陋的互联网:你还敢发孩子的短视频吗?
记一次selenium爬取p站图片的经历
世界热门:丰田最新表态:纯电车不环保!
焦点短讯!谷歌家也没有余粮了:用旧的服务器不要扔 擦擦还能用2年
环球快看点丨路由架构(一)
每日精选:《三体》电视剧罗辑亮相 网友:袁华 是你吗?
环球快消息!连续两部当主演 《流浪地球3》中或没有吴京:如何复活很关键
全球要闻:web安全基础-文件上传(含部分upload-labs靶场通关)
世界资讯:谈刻意练习 Talking about deliberate pratise
新动态:Linux环境下:程序的链接, 装载和库[动态链接]
【全球新要闻】染发剂致癌吗?几十块和几百块的染发剂 究竟有啥区别?
全球快讯:等等党赚了:《仙剑奇侠传七》宣布将加入XGP服务
环球新动态:Gmail之父:有了ChatGPT 搜索引擎活不过两年 就像干掉黄页电话簿
每日焦点!操作系统篇 ———— 开篇[一]
全球最资讯丨ES6 简介(二)
量子通信网络里程碑 中国科大实现模式匹配量子密钥分发
男子将厕所改造成电竞房 网友:从此再也不怕“膀胱局”了
世界观速讯丨9 文件操作
当前速看:多国反对被无视 日本2030年前排放40万吨核污水入海
今日关注:“最强法务部”名不虚传:任天堂赢得Joy-Con手柄集体诉讼案
热门:iPhone 14系列官方降价引热议 网友:安卓厂商压力山大
【环球时快讯】Java实现动态数组(数据结构与算法)
【全球新要闻】推特创作者将获得广告分成:需要开通蓝V会员才有资格
一加Ace 2正面“全身照”首次亮相:超窄边框双曲屏
当前速看:高中生分班前磕头跪谢班主任:网友看后意见大!老师回应:给每人发了红包
【全球速看料】MAUI新生6.9-控件辅助功能①:动画Animation
集合框架
10 正则表达式应用
《流浪地球2》里的“硬核科技” 中国电信已经用上了
全球报道:超详细--redis在Linux环境搭建主从复制
当前视讯!ChatGPT将英伟达AI GPU变成黄金 后者股价飙升超40%
《狂飙》带火鱼干店 老板:微信加烦了!剧中原来是这一集
焦点报道:为什么 L1 正则化能做特征选择而 L2 正则化不能
Linux环境下:程序的链接, 装载和库[可执行文件的装载]
当前焦点!Edge新版增加内容推荐按钮:打开甚至不用点
今日报丨比亚迪1月销量:汉卖出1.22万辆 宋Plus继续火爆
当前头条:[数据结构] 哈希表 (开放寻址法+拉链法)
天天动态:车主展示特斯拉自动泊车入位 结果翻车:变成“自动撞车”
【天天速看料】价格暴降后特斯拉供不应求 马斯克:准备要涨了
热点评!迁移学习(HDAN)《Heuristic Domain Adaptation》
美团索命一问:一个SQL ,怎么分析加了哪些锁? 含4大场景、8个规则
宝能造车梦破碎:烧了80多亿元的观致 如今沦为法拍车
女孩4万多元的摩托 被男摩友加白糖报废!官方介入
读Java实战(第二版)笔记01_Java的变化
全球即时:柔软顺滑 古今男士平角裤3条到手29.9元
世界视讯!休闲百搭 361° 运动束脚裤立减140元:49元起清仓价
环球速看:冰火两重天!四川一地昼夜温差38.6℃ 专家揭秘真相
今年开播有戏 “陈萍萍”演员吴刚回应《庆余年》第二季:很快了
python的基础知识1
奔驰被曝大砍产品线!19款车型或将淘汰 原因现实
环球视点!马斯克收费比微博狠多了:推特被曝企业“金V”认证付费:每月6770元
焦点热议:3年前旗舰也有份!中国广电剧透:小米10/青春版计划4月推送MIUI 14
《流浪地球2》票房破32亿元 导演谈第3部:原班人马再来一遍
全球最资讯丨浙江台州最大汽车经销商老板跑路 旗下19家4S店全部关停
12.4万保时捷首单买家发声:保时捷答应优惠卖车
[数据结构] 树、森林的遍历
每日时讯!MAUI新生2.5-数据绑定和MVVM:MVVM的属性验证
当前速递!父亲借女儿3万压岁钱不还被起诉 法院:应还本金及利息
焦点观察:1万元!佳能入门级全画幅相机EOS R8规格曝光
世界微速讯:为S23让路!三星Galaxy S22京东秒杀:骁龙8小屏旗舰 3569元
环球微头条丨豆瓣8.1分!《三体》主创:能拍中国科幻大作 此生无憾
低代码平台前端的设计与实现(三)设计态画布DesignCanvas的设计与实现
热资讯!重庆一景区煮麻辣汤圆:下次元宵佳节还得等384天
男子打包螺蛳粉开车24小时运回北京 只因朋友圈一句话:这是真爱
【天天新视野】用户滑雪频繁触发iPhone车祸检测功能 苹果:已进行了优化 同时派代表考察
天天快播:甜品级游戏本价格已曝光:搭载RTX 4050/4060
环球消息!5 组合数据类型
今日讯!短记我的二十五岁,如落叶般随风飘荡。
世界观焦点:java基础:流程控制
女子春节连打4通宵麻将:患上突发性耳聋
国产显卡搞定“显卡杀手”:摩尔线程MTT S80居然能跑《孤岛危机》
【世界独家】极限挤牙膏!三星Galaxy S23系列用残血版LPDDR5X内存
世界微动态丨wireshark 抓包整理———— 从一个小案例开始 [一]