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

相关文章

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.高级查询三、实用技巧一、常用语

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2