语法高亮显示示例展示了如何执行简单的语法高亮显示(对C ++文件语法高亮)。

  该示例主要使用QTextEdit和QSyntaxHighlighter实现。

  要提供自定义的语法突出显示,您必须子类QSyntaxHighlighter和重新实现highlightBlock函数,并定义自己的突出显示规则。

  使用QVector存储高亮显示规则:规则由QRegularExpression模式和QTextCharFormat实例组成,然后配置好的highlightingRules,用于当文本块更新时自动调用highlightBlock函数刷新高亮显示文本。

struct HighlightingRule{    QRegularExpression pattern;    QTextCharFormat format;};QVector<HighlightingRule> highlightingRules;
void Highlighter::highlightBlock(const QString &text){    foreach (const HighlightingRule &rule, highlightingRules) {        QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);while (matchIterator.hasNext()) {            QRegularExpressionMatch match = matchIterator.next();setFormat(match.capturedStart(), match.capturedLength(), rule.format);}}...}

  高亮显示文本格式有:

QTextCharFormat keywordFormat; // 关键词QTextCharFormat classFormat; // 类名QTextCharFormat singleLineCommentFormat; // 单行注释QTextCharFormat multiLineCommentFormat; // 多行注释QTextCharFormat quotationFormat; // 头文件引用QTextCharFormat functionFormat; // 函数

  以添加类名高亮语法为例:

HighlightingRule rule;

classFormat.setFontWeight(QFont::Bold);classFormat.setForeground(Qt::darkMagenta);rule.pattern = QRegularExpression("\\bQ[A-Za-z]+\\b"); // 配置"类名"正则模式rule.format = classFormat; // 配置"类名"的文本格式highlightingRules.append(rule); // 添加到高亮显示规则容器,用于文本刷新

关于更多

  • 在QtCreator软件可以找到:

  • 或在以下Qt安装目录找到
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\richtext\syntaxhighlighter
  • 相关链接

https://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html
  • Qt君公众号回复『Qt示例』获取更多内容。

语法高亮_Qt官方示例语法高亮器相关推荐

  1. qt获取combobox的值_Qt官方示例嵌套甜甜圈

    ❝ 本示例演示如何使用QPieSeries API创建嵌套的甜甜圈图. ❞ 创建嵌套甜甜圈图   先创建一个QChartView实例并启用抗锯齿.然后从QChartView实例获得一个QChart对象 ...

  2. qt label显示文字_Qt官方示例共享内存

    这个例子展示了如何使用QSharedMemory类(共享内存)进行进程间通信.   构建示例,请运行make.要运行该示例,请运行两个实例.main()函数创建一个应用程序和我们示例的Dialog类的 ...

  3. qt 设置按钮大小_Qt官方示例双向按钮

    "双向按钮"示例演示了如何使用状态机框架实现简单的状态机,该状态机在单击按钮时切换当前状态.   应用程序的main()函数从构造应用程序对象,按钮和状态机开始. int main ...

  4. c++ qt获取电脑的内存_Qt官方示例-TCP客户端/服务器示例

    该示例演示了在本地主机上的TCP客户端和服务器是如何通讯的. 客户端 绑定信号槽. connect(&tcpClient, &QAbstractSocket::connected, t ...

  5. c++ qt获取电脑的内存_Qt官方示例信号量

    ❝ 演示Qt多线程的信号量操作编程. ❞   生产者将数据写入缓冲区,直到到达缓冲区末尾为止,然后从头开始重新开始,覆盖现有数据.使用者线程读取生成的数据,并将其写入标准错误.   信号量比互斥量可以 ...

  6. qt connect函数_Qt官方示例广播发送器

    ❝ 本示例使用Qt Network API演示如何通过本地网络向多个客户端广播消息. ❞   总结了下该例子的使用方法: 创建UDP套接字. udpSocket = new QUdpSocket(th ...

  7. logo qt添加_Qt官方示例-窗口标志

    窗口标志示例展示了如何使用Qt中可用的窗口标志类型来指定窗口系统属性. 根据示例整理出来的各窗口标志作用一览表如下: 只能设置一个的窗口标志对照表 窗口标志 描述 Qt::QWidget 窗口的默认属 ...

  8. qt label显示图片_Qt官方示例-QML Axes

    QML轴线图示例,折线图,散点图. 使用相同轴坐标的折线图和散点图. 代码: ChartView {title: "Two Series, Common Axes"anchors. ...

  9. 装饰器的定义、语法糖用法及示例代码

    1. 装饰器的定义 就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数. 装饰器的功能特点: 不修改已有函数的源代码 不修改已有函数的调用方式 给已有函数增加额外的功能 2. 装饰器的示例代码 ...

  10. python装饰器语法糖_最全python装饰器的各种写法

    装饰器是最容易在我们项目编写上出现的内容,结实的掌握这部分内容,对我们的代码是否能顺利编写时非常重要的,下面就关于python装饰器问题,给大家最详细介绍. 装饰器的示例代码# 定义装饰器 def d ...

最新文章

  1. Voat —— 基于 ASP.NET 的 Reddit 高仿系统
  2. .CS文件编译生成.DLL文件 .EXE文件(C#网络搜集)(转)
  3. c语言中return语句例子,C语言 return 语句-嗨客网
  4. 315. Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
  5. python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板
  6. 错误C4996:'std :: _Copy_impl'
  7. JavaScript 操作 HTML DOM (文档对象模型) 相关知识点
  8. Python logging日志系统
  9. 在Linux操作系统下修改IP、DNS和路由配置
  10. Python实现四个经典小游戏合集
  11. svn版本管理软件——svn分支管理
  12. 全国高级计算机职称考试试题及答案,最新全国计算机职称考试试题及答案.doc...
  13. javascript飞机大战-----007爆炸效果
  14. Selenium元素定位神器工具谷歌浏览器插件-SelectorsHub介绍、安装和使用
  15. 什么是思维模型?什么是原则?
  16. 一点资讯app signature
  17. mumu模拟器屏蔽root,mumu模拟器下载
  18. 英文歌曲:Yesterday Once More(昨日重现)
  19. 常用的RAID模式及特点
  20. python外星人颜色答案_Python-外星人

热门文章

  1. 算法笔记_什么是算法/算法分析/减而知之/分而治之/动态规划
  2. GMapping源码分析之随手笔记
  3. opencv3.4.2调用训练好的Openpose模型
  4. python训练Faster RCNNC++调用训练好的模型进行物体检测-基于opencv3.4.3(超详细)
  5. 【docker】docker持续集成CI/持续部署CD
  6. 15-2 mysql的数据类型
  7. CentOS7+rsync+sersync实现数据实时同步
  8. 8.Postman中发送请求被拦截(证书问题)
  9. 基于Kubernetes集群部署skyDNS服务
  10. 弹出层之3:JQuery.tipswindow