/
Zero_Fly
/
JSON_viewer
Обзор
Документация
Войти
/
Zero_Fly
/
JSON_viewer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
result
src/json-viewer/JSON_highlight.cpp
63 строки
2 KB
Zero-Fly-
add tree jsonView
16 янв 2025, 16:31
16 янв 2025, 16:31
ace3dac
Код
Авторство
О чём код?
#include"JSON_highlight.h" QColor orange1(255, 137, 0); QColor green1(138, 206, 0); JsonSyntaxHighlighter::JsonSyntaxHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) { HighlightingRule rule; // JSON keys formatting QTextCharFormat keyFormat; keyFormat.setForeground(green1); keyFormat.setFontWeight(QFont::Bold); rule.pattern = QRegularExpression("\"(\\w+)\"\\s*:"); rule.format = keyFormat; highlightingRules.append(rule); // JSON values formatting QTextCharFormat valueFormat; valueFormat.setForeground(orange1); rule.pattern = QRegularExpression(":\\s*\"([^\"]*)\""); rule.format = valueFormat; highlightingRules.append(rule); // JSON number formatting QTextCharFormat numberFormat; numberFormat.setForeground(Qt::darkMagenta); rule.pattern = QRegularExpression(":\\s*-?\\d+(\\.\\d+)?"); rule.format = numberFormat; highlightingRules.append(rule); // JSON true/false/null formatting QTextCharFormat boolNullFormat; boolNullFormat.setForeground(Qt::darkGreen); QStringList keywords; keywords << "true" << "false" << "null"; foreach (const QString &pattern, keywords) { rule.pattern = QRegularExpression("\\b" + pattern + "\\b"); rule.format = boolNullFormat; highlightingRules.append(rule); } // JSON brackets formatting QTextCharFormat bracketFormat; bracketFormat.setForeground(Qt::darkGray); QStringList brackets; brackets << "{" << "}" << "[" << "]"; foreach (const QString &pattern, brackets) { rule.pattern = QRegularExpression(QRegularExpression::escape(pattern)); rule.format = bracketFormat; highlightingRules.append(rule); } } void JsonSyntaxHighlighter::highlightBlock(const QString &text){ foreach (const HighlightingRule &rule, highlightingRules) { QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text); while (matchIterator.hasNext()) { QRegularExpressionMatch match = matchIterator.next(); setFormat(match.capturedStart(), match.capturedLength(), rule.format); } } }