铜仁市网站建设情况南京微网站开发

news/2025/10/5 12:40:40/文章来源:
铜仁市网站建设情况,南京微网站开发,四川建设网app下载,游戏资讯网站怎么做功能描述#xff1a;开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件#xff0c;而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序#xff0c;故取名为 QtCmd。 上述演示… 功能描述开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果  QtCmd 不是因为它是 Qt 的组件而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序故取名为 QtCmd。 上述演示是在 Win10 操作系统下模拟命令提示符的功能输入错误的指令(如 windows 下输入 ls 指令)错误输出的字体颜色为红色输入正确的指令(如 windows 下输入dir 指令)标准输出的字体颜色显示正常。 本应用程序原为一个项目的子功能实现命令行终端的界面现把这一功能单独封装了一个窗体类分享给大家参考可以直接集成到你的应用程序中。 具体功能使用就不多说了和命令行终端的功能一模一样只是说把这一功能集成到自己的应用程序中了命令行终端支持的指令本终端全部支持。 二、命令行终端程序开发 命令行终端程序主要在 terminalwidget.h 和 terminalwidget.cpp 中封装了 TerminalWidget 类实现了有关命令输入和信息输出的所有功能。 terminalwidget.h 文件代码如下 #ifndef TERMINALWIDGET_H #define TERMINALWIDGET_H#include QTextEdit #include QKeyEvent #include QFont #include QProcess #include QByteArray #include QLabel #include QHBoxLayout #include QVBoxLayout #include QTextLayout #include QTextCursor #include QTextBlock #include QTextCodec #include assert.hclass TerminalWidget: public QTextEdit {Q_OBJECT public:TerminalWidget();protected:void keyPressEvent(QKeyEvent *e);private:// 字体QFont font;// 命令行终端进程QProcess * proc;// 光标位置long long lastPosition 0;// 上一次的输入内容QByteArray lastInput;public slots:/*** brief readyReadStandardOutputSlot 标准输出*/void readyReadStandardOutputSlot();/*** brief readyReadStandardErrorSlot 错误输出*/void readyReadStandardErrorSlot(); };#endif // TERMINALWIDGET_H terminalwidget.cpp 文件代码如下 #include terminalwidget.h #include QDebugTerminalWidget::TerminalWidget() {setStyleSheet(background-color:rgb(0,0,0); color:rgb(255,255,255); border:0px;);setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);resize(1000,700);setWindowTitle(命令行提示符);font.setFamily(Times New Roman);font.setPixelSize(14);setFont(font);proc new QProcess();connect(proc,SIGNAL(readyReadStandardOutput()),this,SLOT(readyReadStandardOutputSlot()));connect(proc,SIGNAL(readyReadStandardError()),this,SLOT(readyReadStandardErrorSlot()));#ifdef Q_OS_WINproc-start(cmd); #elif Q_OS_LINUXproc-start(bash); #endifQTextCursor editCursor textCursor();QTextBlockFormat textBlockFormat;textBlockFormat.setLineHeight(20, QTextBlockFormat::FixedHeight);editCursor.setBlockFormat(textBlockFormat);setTextCursor(editCursor); }void TerminalWidget::keyPressEvent(QKeyEvent *e) {QTextCursor editCursor textCursor();// Qt::Key_Enter 是小键盘数字键盘的 Enter对应的虚拟键码为0x01000005// Qt::Key_Return 是大键盘区的 Enter对应的虚拟键码为0x01000004if(e-key() Qt::Key_Return || e-key() Qt::Key_Enter){e-ignore();editCursor.setPosition(lastPosition, QTextCursor::MoveAnchor);editCursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);QString string editCursor.selectedText();editCursor.clearSelection(); #ifdef Q_OS_WINlastInput string.toLocal8Bit() \r \n; #elif Q_OS_LINUXlastInput string.toLocal8Bit() \n; #endifproc-write(lastInput);return;}else if(e-key() Qt::Key_Backspace editCursor.position() lastPosition)return;else if(e-key() Qt::Key_Delete editCursor.position() lastPosition)return;elsereturn QTextEdit::keyPressEvent(e); }void TerminalWidget::readyReadStandardOutputSlot() {QByteArray ba proc-readAllStandardOutput();QTextCodec * textCodec QTextCodec::codecForName(System);// assert 断言如果 textCodec 为空则编译报错assert(textCodec ! nullptr);QString output textCodec-toUnicode(ba);if (output.length() 0 output ! QString::fromLocal8Bit(lastInput)){setTextColor(Qt::white);append(output.trimmed());moveCursor(QTextCursor::End);lastPosition textCursor().position();} }void TerminalWidget::readyReadStandardErrorSlot() {QByteArray ba proc-readAllStandardError();QTextCodec* textCodec QTextCodec::codecForName(System);// assert 断言如果 textCodec 为空则编译报错assert(textCodec ! nullptr);QString output textCodec-toUnicode(ba);if (output.length() 0 output ! QString::fromLocal8Bit(lastInput)){setTextColor(Qt::red);append(output.trimmed());moveCursor(QTextCursor::End);lastPosition textCursor().position();} } 完整的代码已经贴上每个函数的备注写的非常清楚如有不清楚的地方可以私信我。 完整代码压缩包下载地址  https://download.csdn.net/download/tanou3212/88222855https://download.csdn.net/download/tanou3212/88222855如果出现中文乱码的问题请参考我的另外一篇博客《第十课Qt 字符编码和中文乱码相关问题》 百分百能解决你的问题

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

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

相关文章

入门AJAX——XMLHttpRequest(Get) - 教程

入门AJAX——XMLHttpRequest(Get) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

知识付费网站搭建微信营销的功能

前段时间,写程序时,出了错误,竟然没有想到是自己属性命名的问题,哎~~~真是一定要注意规范呀,在这里我从网上找了些,规范作为参考 Sun 推荐的命名规范 1 ,类名要首字母大写,后面的单词…

公司网站php天河网站建设哪家好

文章目录 1. TSP案例引入2. 考虑惰性约束的求解效率对比2.1 求解基础TSP模型2.2 基于SCIP的Conshdlr添加惰性约束1. TSP案例引入 在运筹学建模和求解过程中,“lazy constraints”(惰性约束)是一种动态添加约束的策略,松弛部分约束后求解得到的“可行解”,不断地进行可行性…

ROM和RAM

1.1计算机中有两种存储器 (1)内存:内存与CPU接轨比较紧密,内存可以被CPU直接访问,内存可按照字节单位来随机访问,程序运行时离不开内存,程序中的变量都是定义在内存中,内存受限于物理技术和成本,容量比较小而…

深入解析:C#学习26天:内存优化的几种方法

深入解析:C#学习26天:内存优化的几种方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

电子商务网站建设 代码学校诗歌网站建设

在存在缓存的情况下,删除较前的slide,会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide,且这5个slide已缓存,则删除slide2后,仍为5个slide,且slide2的内容变为slide3的内容,此…

老板合作网站开发网销怎么做

日常工作中经常需要确定各个指标的权重,利用熵值法确定权重属于客观赋权法,从数据出发,避免过强的主观性,但是也同时带来了一些问题。在某个论坛的帖子中,作者提出了这样的一个问题:“熵值法用于确定权重是…

整理数据制作 直方图,箱须图,概率密度估计(KDE)图

1.导入库和设置 import math import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[SimHei] # 设置中文字体,作用设置 matplotlib 使用中文字体显示…

云原生应用架构设计原则与落地实践:从理念到便捷的方法论

云原生应用架构设计原则与落地实践:从理念到便捷的方法论pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

做装饰公司网站6wordpress添加直达链接

问题描述:边缘计算设备是什么意思。 问题解答: 边缘计算(Edge Computing)是一种计算模型,其主要思想是在距离数据产生源头更近的地方进行数据处理和计算,而不是将所有数据传输到远程云服务器进行处理。边…

基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

UCosIII 在 Tang Nano 20K 的 SparrowRV 软核移植

一直想完整的完成从FPGA到RTOS再到基础APP完成整个流程的理解,于是,尝试在开源的小麻雀操作系统上移植最简单的UCos-III移植,但由于不懂Verilog,所以磕磕碰碰,以下是其记录: 准备工作 由于使用的是一块小小的 Ta…

学做网站培训班要多少钱家电网站源码

2019独角兽企业重金招聘Python工程师标准>>> 1.安装oracle客户端 2.配置文件 加增一个数据库的方式,是编辑 tnsnames.ora文件,在C:\Oracle\Ora81\NETWORK\ADMIN 目录下. 增加类似下面的信息 SVR236 (DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL …

深入解析:Elasticsearch的集群管理介绍

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SIP抓包工具 SIP抓包 SIP抓包

SIP抓包工具 SIP抓包 SIP抓包 CentOS 环境 sngrep 安装及使用在呼叫中心类应用开发过程中,经常需要对 SIP 信令抓包,分析排查问题。通常抓包的工具非常多样,如 Wireshark、tcpdump、ngrep 等都是可选项,但是针对…

2025声级计厂家最新权威推荐排行榜单! 数字声级计,精密声级计,防爆声级计,手持式声级计,剂量声级计公司推荐!

在噪声污染愈发受到重视的当下,从工业生产的机器轰鸣到城市交通的持续喧嚣,从建筑施工的阵阵嘈杂到日常环境中的各类声响,准确监测噪声强度成为管控污染的核心环节。而声级计作为专业测量工具,其品类丰富多样 ——…

US$78.85 KEYDIY KD ZB10-4 Universal Smart Remote Key (Start) 4 Buttons for Honda Type 5pcs/lot

KEYDIY KD ZB10-4 Universal Smart Remote Key (Start) 4 Buttons for Honda Type 5pcs/lot Manufacturer: KEYDIY Condition: New Buttons: 4 Color: Black Proximity / Smart / Keyless Go: Yes KEYDIY Remote Serie…

怎么套模板做网站建设众筹类网站

导航引言一、什么是配置中心二、常见的配置中心组件三、Nacos Config 入门四、Nacos Config 动态配置4.1 硬编码方式(默认支持动态生效)4.2 属性注入五、配置共享5.1 相同微服务不同环境间共享5.2 不同微服务配置共享六、Nacos Config 的几个概念总结引言…

深圳图派做的网站后台加什么做网站用win2008系统

作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。 技术人人都可以磨炼,但处理问题的思…