Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QTextEdit>
  4. #include <qsyntaxhighlighter.h>
  5. #include <QSyntaxHighlighter>
  6. #include <QRegularExpressionMatchIterator>
  7.  
  8.  
  9. class highlighter: public QSyntaxHighlighter
  10. {
  11. public:
  12.     highlighter(QTextDocument *parent = nullptr):QSyntaxHighlighter(parent)
  13.     {
  14.  
  15.     }
  16.  
  17.     void highlightBlock(const QString &text)
  18.     {
  19.         QVector<HighlightingRule> Rules;
  20.  
  21.         QTextCharFormat numbers;
  22.         numbers.setFontWeight(QFont::Bold);
  23.         numbers.setForeground(Qt::darkGreen);
  24.         QStringList numbersPattern;
  25.         numbersPattern << "0" << "1"<< "2"<< "3"<< "4"<< "5"<< "6"<< "7"<< "8"<< "9";
  26.         foreach (const QString &pattern, numbersPattern)
  27.         {
  28.                 rule.pattern = QRegularExpression(pattern);
  29.                 rule.format = numbers;
  30.                 Rules.append(rule);
  31.         }
  32.  
  33.         QTextCharFormat marks;
  34.         marks.setFontWeight(QFont::Bold);
  35.         marks.setForeground(Qt::red);
  36.         QStringList marksPattern;
  37.         marksPattern << "\\!" << "\\." << "\\," << "\\?" << "\\:" << "\\;";
  38.         foreach (const QString &pattern, marksPattern)
  39.         {
  40.                 rule.pattern = QRegularExpression(pattern);
  41.                 rule.format = marks;
  42.                 Rules.append(rule);
  43.         }
  44.  
  45.         foreach (const HighlightingRule &rule, Rules)
  46.         {
  47.                 QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
  48.                 while (matchIterator.hasNext())
  49.                 {
  50.                     QRegularExpressionMatch match = matchIterator.next();
  51.                     setFormat(match.capturedStart(), match.capturedLength(), rule.format);
  52.                 }
  53.         }
  54.     }
  55. private:
  56.     struct HighlightingRule
  57.         {
  58.             QRegularExpression pattern;
  59.             QTextCharFormat format;
  60.         };
  61.     HighlightingRule rule;
  62. };
  63.  
  64. int main(int argc, char *argv[])
  65. {
  66.     QApplication a(argc, argv);
  67.  
  68.     QTextEdit text;
  69.     text.setMinimumSize(600,480);
  70.     text.setFontPointSize(18);
  71.     text.setFontFamily("Helvetica");
  72.  
  73.     highlighter hl(text.document());
  74.     text.show();
  75.  
  76.     return a.exec();
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement