Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- #include <QApplication>
- #include <QTextEdit>
- #include <qsyntaxhighlighter.h>
- #include <QSyntaxHighlighter>
- #include <QRegularExpressionMatchIterator>
- class highlighter: public QSyntaxHighlighter
- {
- public:
- highlighter(QTextDocument *parent = nullptr):QSyntaxHighlighter(parent)
- {
- }
- void highlightBlock(const QString &text)
- {
- QVector<HighlightingRule> Rules;
- QTextCharFormat numbers;
- numbers.setFontWeight(QFont::Bold);
- numbers.setForeground(Qt::darkGreen);
- QStringList numbersPattern;
- numbersPattern << "0" << "1"<< "2"<< "3"<< "4"<< "5"<< "6"<< "7"<< "8"<< "9";
- foreach (const QString &pattern, numbersPattern)
- {
- rule.pattern = QRegularExpression(pattern);
- rule.format = numbers;
- Rules.append(rule);
- }
- QTextCharFormat marks;
- marks.setFontWeight(QFont::Bold);
- marks.setForeground(Qt::red);
- QStringList marksPattern;
- marksPattern << "\\!" << "\\." << "\\," << "\\?" << "\\:" << "\\;";
- foreach (const QString &pattern, marksPattern)
- {
- rule.pattern = QRegularExpression(pattern);
- rule.format = marks;
- Rules.append(rule);
- }
- foreach (const HighlightingRule &rule, Rules)
- {
- QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
- while (matchIterator.hasNext())
- {
- QRegularExpressionMatch match = matchIterator.next();
- setFormat(match.capturedStart(), match.capturedLength(), rule.format);
- }
- }
- }
- private:
- struct HighlightingRule
- {
- QRegularExpression pattern;
- QTextCharFormat format;
- };
- HighlightingRule rule;
- };
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QTextEdit text;
- text.setMinimumSize(600,480);
- text.setFontPointSize(18);
- text.setFontFamily("Helvetica");
- highlighter hl(text.document());
- text.show();
- return a.exec();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement