Qt关键词高亮方法小结

Posted fengyaoyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"));

//效果

技术图片

 未完待续...

 

 

 

以上是关于Qt关键词高亮方法小结的主要内容,如果未能解决你的问题,请参考以下文章

VS2008+Qt+助手 智能提示不显示Qt关键字不高亮的解决办法已解决

通过QT查找Word中的关键字,并做高亮或删除操作

在 CMake 项目中为 Qt 关键字启用语法突出显示

MorkDown 常用语法总结

QTextEdit实现自定义关键字着色(代码块着色)

Jekyll 偏移代码片段高亮的初始行