码迷,mamicode.com
首页 > 其他好文 > 详细

Qt关键词高亮方法小结

时间:2020-03-14 15:02:19      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:void   define   form   方法   edit   indexof   qstring   syntax   parent   

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

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"));

//效果

技术图片

 未完待续...

 

 

 

Qt关键词高亮方法小结

标签:void   define   form   方法   edit   indexof   qstring   syntax   parent   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!