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

百合怎么doi怎么做网站安卓优化大师旧版本下载

百合怎么doi怎么做网站,安卓优化大师旧版本下载,网站搭建免费官网,网络公司管理系统功能描述:开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件,而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序,故取名为 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.h>class 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 <QDebug>TerminalWidget::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.hrbkazy.com/news/39144.html

相关文章:

  • 免费的建网站软件史上最强大的搜索神器
  • 重庆市城市建设规划官方网站站长统计
  • 婚庆网站源码java广告推销网站
  • wordpress 文章的形式南宁百度seo优化
  • 我朋友是做卖网站的比较靠谱的电商培训机构
  • 电商网站建设规划开发方案营销推广投放平台
  • 萍乡网站制作近一周热点新闻
  • 网络产品营销策略范文石景山区百科seo
  • wordpress 默认编辑器镇江关键字优化品牌
  • 广州网站维护网站排名优化服务
  • 茶叶市场网站建设方案线上推广方式有哪些
  • win7如何做网站服务器旅行网站排名
  • 民政府公众信息网站建设香港头条新闻
  • python怎么搭建网站精准推广
  • 手机网站的开发百度图片识别在线识图
  • wordpress教程全集(入门到精通)seo的含义
  • 网站开发都需要什么关键词在线挖掘网站
  • 做振动盘的企业网站百度热搜广告位多少钱
  • 微信电商平台大连seo优化
  • 虹口网站建设网站友情链接交易平台
  • php中英文网站源码百度搜索热度排名
  • 能源网站建设公司查询关键词排名工具
  • 大良营销网站建设行情网络推广外包
  • 网站导航条怎么做效果建网站软件工具
  • javaweb是用java做网站吗苏州优化网站公司
  • 美色商城 网站建设广州中小企业seo推广运营
  • 泰安专业的网站制作广西关键词优化公司
  • 网站制作合同书微营销软件
  • 网站开发的背景免费的外链平台
  • 如何修改网站图片怎么做一个免费的网站