Qt关键词高亮方法小结

高亮关键词的需求不一样,可能采用的比较适合的方法也不一样,以下对常见方法作小结。

1 QSyntaxHighlighter

QSyntaxHighlighter用于高亮QTextDocument中的text,要求继承QSyntaxHighlighter并实现highlightBlock

virtual void highlightBlock(const QString &text) = 0;

下面给出示例代码:

//.h

#ifndef HIGHLIGHTER_H
#define HIGHLIGHTER_H
#include <QSyntaxHighlighter>
class Highlighter : public QSyntaxHighlighter
{
public:
    Highlighter(QObject* pParent = 0): QSyntaxHighlighter(pParent){}
    void setColorText(const QString& strText, const QColor& color);

protected:
    virtual void highlightBlock(const QString& strText);

private:
    QRegExp pattern;
    QTextCharFormat format;
};
#endif // HIGHLIGHTER_H

//.cpp

#include "Highlighter.h"

void Highlighter::setColorText(const QString& strText, const QColor& color)
{
    pattern = QRegExp(strText);
    format.setForeground(color);
}

void Highlighter::highlightBlock(const QString& strText)
{
        QRegExp expression(pattern);
        int iIndex = strText.indexOf(expression);
        while (iIndex >= 0)
        {
            int iLength = expression.matchedLength();
            setFormat(iIndex, iLength, format);
            iIndex = strText.indexOf(expression, iIndex + iLength);
        }
}

//main

pHighlighter = new Highlighter(ui.textEdit);
pHighlighter->setColorText("hello world", QColor("red"));

//效果

未完待续...

原文地址:https://www.cnblogs.com/fengyaoyao/p/12491746.html

时间: 2024-10-29 17:15:48

Qt关键词高亮方法小结的相关文章

3.6 Lucene基本检索+关键词高亮+分页

3.2节我们已经运行了一个Lucene实现检索的小程序,这一节我们将以这个小程序为例,讲一下Lucene检索的基本步骤,同时介绍关键词高亮显示和分页返回结果这两个有用的技巧. 一.Lucene检索的基本步骤 1 import java.nio.file.Paths; 2 import java.io.*; 3 4 import org.apache.lucene.analysis.standard.StandardAnalyzer; 5 import org.apache.lucene.docu

如何通过js使搜索关键词高亮

给你推荐通过jquery来实现高亮关键词.jquery.textSearch-1.0.js代码: (function($){ $.fn.textSearch =function(str,options){ var defaults ={ divFlag:true, divStr:" ", markClass:"", markColor:"red", nullReport:true, callback:function(){ returnfalse

VIM使用方法小结

有人说:学习vim就像学弹钢琴一样,一旦学会,受益无穷. VIM可能是人类史上最好的文本编辑器,但是学习vim在开始时是痛苦的.我们无法一次性记住所有的使用方法,但至少要知道 有哪些功能,然后在能用快捷方法的时候尽量使用,就能熟练使用VIM了. 两种模式 vim的神奇之处就在于他不是打开之后就像记事本一样往里输入或者删除,他有两种模式. 1.Normal 模式:当我们使用vim命令打开一个文件时,就进入了Normal模式,在这种模式下,我们可以移动光标,删除,粘贴等操作. 2.插入模式:这就类似

和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮

前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文章 一.和我一起打造个简单搜索之ElasticSearch集群搭建 二.和我一起打造个简单搜索之ElasticSearch入门 三.和我一起打造个简单搜索之IK分词以及拼音分词 四.和我一起打造个简单搜索之Logstash实时同步建立索引 五.和我一起打造个简单搜索之SpringDataElasti

Linux将服务设置为开机自启动的方法小结

Linux设置为开机自启动的几种方法小结 和Windows一样,Linux也可以将一些服务设置为开机自启动,这样可以避免每次开机都会去打开某一个服带来的麻烦!Linux开机将服务设置为开机自启动的方法大概有一下几种: 一.ntsysv图形界面设置 ntsysv -> NeWT + SysV ,它是使用 newt 库的 SysV 风格的 runlevel 配置工具,Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级

网页刷新页面方法小结

1.页面自动刷新:把如下代码加入<head>区域中 <meta http-equiv="refresh" content="20"> 其中20指每隔20秒刷新一次页面. 2.页面自动跳转:把如下代码加入<head>区域中 <meta http-equiv="refresh" content="20;url=https://www.baidu.com/"> 其中20指隔20秒后跳转

(转)java判断string变量是否是数字的六种方法小结

java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return fal

.net中TreeView使用方法小结(1)

在新项目的开发中,TreeView的作用很重要,这两天好好的学习了一下treeview的使用方法. 这篇文章主要关注TreeView带有CheckBox的情况. 在TreeView中点击CheckBox触发的函数如下: private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { }   在这个事件中选中,或者取消的那一个节点为: TreeNode node = e.Node; 使用TreeView控件要经常使用到

[转载]ASP.NET对路径&quot;xxxxx&quot;的访问被拒绝的解决方法小结

异常详细信息: System.UnauthorizedAccessException: 对路径“D:/temp1/MyTest.txt”的访问被拒绝 在windows 2003下,在运行web应用程序的时候出现一下错误: 服务器无法处理请求,-->对路径“C:/temp/mytest.txt”的访问拒绝 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.UnauthorizedAccess