Qt Qsyntaxhighlighter给QTextEdit设置丰富的语法高亮格式

本文主要是介绍Qt Qsyntaxhighlighter给QTextEdit设置丰富的语法高亮格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*语法高亮* *包括关键字、函数、注释、@{}、全局变量等等*/#ifndef MYSYNTAXHIGHLIGHTER_H
#define MYSYNTAXHIGHLIGHTER_H
#include <QSyntaxHighlighter>
#include <QTextCharFormat>
//#include <QObject>
//#include <QRegExp>
#include <QTextEdit>
//#include <QVector>
//#include <QString>
//#include <global_operator.h>QT_BEGIN_NAMESPACE
class QTextDocument;
QT_END_NAMESPACEclass MySyntaxHighlighter:public QSyntaxHighlighter{Q_OBJECT
public:MySyntaxHighlighter(QTextDocument *parent = 0);void getKeywords(QString path,QTextEdit* show);//从系统库路径下获取关键字列表,返回信息到消息框void getFuncwords(QString path,QTextEdit* show);//从用户库目录下获取函数列表,返回信息到消息框public slots:void setGlobalListQueue(const QStringList& textQueue);//设置全局变量的高亮规则protected:void highlightBlock(const QString  &text) Q_DECL_OVERRIDE;
private:struct HighlightingRule{QRegExp pattern;QTextCharFormat format;};void setNormalTextFormat();void setDigitalFormat();void setKeyAndFuncFormat();void setAtFormat();void setGlobalFormat();void setStringFormat();void setCommentFormat();//    QString kPath;//好像暂时没什么用
//    QString fPath;void setGlobalListQueue();QVector<HighlightingRule> highlightingRules;//其它放在一个矢量里面QVector<HighlightingRule> globalHighlightRules;//全局变量会时刻变动,不跟其它语法高亮共用一个矢量QVector<HighlightingRule> atHighlightRules;//艾特的单独存一个矢量里面//这四个称作其它变量QTextCharFormat normalTextFormat;//普通文本的样式QTextCharFormat digitalFormat;//数字样式QTextCharFormat keywordFormat;//关键字高亮规则QTextCharFormat functionFormat;//函数高亮QTextCharFormat globalVarFormat;//全局变量高亮QTextCharFormat atFormat;//@{}式子高亮//这s三个不需要矢量QTextCharFormat commentFormat;//注释高亮QTextCharFormat multiLineCommentFormat;//块状注释高亮QTextCharFormat stringFormat;//字符串高亮//枚举块状注释开始、块状注释结束、单行注释和字符串enum symbolType{nothing = -1,comBegin = 0,singleCom,aString};enum symbolType getFirstSymbolTypeOf(QString tContext, int tIndex );//判断tContext中,从tIndex开始,最先出现哪个符号//如果where在有效区块结束符号*)后面(where>0)或者在previousBlockState=0的行(where=0),则对后面进行一系列检查void checkFromHere(QString text, int where);//如果区块在where开始,则对后面进行一系列检查void blockFromHere (QString text, int where);//    int startIndex;
//    int pos;//检查行末的状态
//    bool lastCharInSingle = false;
//    bool lastCharInBlock = false;
//    bool lastCharInNormal = false;//既不属于字符串又不属于注释
};#endif // MYSYNTAXHIGHLIGHTER_H








#include <QtGui>
#include <QRegExp>
#include <QFont>
#include <QFile>
//#include <algorithm>#include "mysyntaxhighlighter.h"
//#include <QDialog>
//#include <QMessageBox>
//#include <QApplication>
//#include <queue&g

这篇关于Qt Qsyntaxhighlighter给QTextEdit设置丰富的语法高亮格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/549792

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

Tomcat性能参数设置

转自:http://blog.csdn.net/chinadeng/article/details/6591542 Tomcat性能参数设置 2010 - 12 - 27 Tomcat性能参数设置 博客分类: Java Linux Tomcat 网络应用 多线程 Socket 默认参数不适合生产环境使用,因此需要修改一些参数   1、修改启动时内存参数、并指定J

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe