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

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语