同步操作将从 Gitee 极速下载/Cppcheck 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef CODEEDITOR_H#define CODEEDITOR_H#include <QSyntaxHighlighter>#include <QPlainTextEdit>#include <QObject>#include <QRegularExpression>class CodeEditorStyle;class QPaintEvent;class QResizeEvent;class Highlighter : public QSyntaxHighlighter {Q_OBJECTpublic:explicit Highlighter(QTextDocument *parent,CodeEditorStyle *widgetStyle);void setSymbols(const QStringList &symbols);void setStyle(const CodeEditorStyle &newStyle);protected:void highlightBlock(const QString &text) override;private:enum RuleRole {Keyword = 1,Class = 2,Comment = 3,Quote = 4,Symbol = 5};struct HighlightingRule {QRegularExpression pattern;QTextCharFormat format;RuleRole ruleRole;};void applyFormat(HighlightingRule &rule);QVector<HighlightingRule> mHighlightingRules;QVector<HighlightingRule> mHighlightingRulesWithSymbols;QRegularExpression mCommentStartExpression;QRegularExpression mCommentEndExpression;QTextCharFormat mKeywordFormat;QTextCharFormat mClassFormat;QTextCharFormat mSingleLineCommentFormat;QTextCharFormat mMultiLineCommentFormat;QTextCharFormat mQuotationFormat;QTextCharFormat mSymbolFormat;CodeEditorStyle *mWidgetStyle;};class CodeEditor : public QPlainTextEdit {Q_OBJECTpublic:explicit CodeEditor(QWidget *parent);CodeEditor(const CodeEditor &) = delete;CodeEditor &operator=(const CodeEditor &) = delete;~CodeEditor();void lineNumberAreaPaintEvent(QPaintEvent *event);int lineNumberAreaWidth();void setStyle(const CodeEditorStyle& newStyle);/*** Set source code to show, goto error line and highlight that line.* \param code The source code.* \param errorLine line number* \param symbols the related symbols, these are marked*/void setError(const QString &code, int errorLine, const QStringList &symbols);protected:void resizeEvent(QResizeEvent *event) override;private slots:void updateLineNumberAreaWidth(int newBlockCount);void highlightErrorLine();void updateLineNumberArea(const QRect &, int);private:QString generateStyleString();private:QWidget *mLineNumberArea;Highlighter *mHighlighter;CodeEditorStyle *mWidgetStyle;int mErrorPosition;};class LineNumberArea : public QWidget {public:explicit LineNumberArea(CodeEditor *editor) : QWidget(editor) {mCodeEditor = editor;}QSize sizeHint() const override {return QSize(mCodeEditor->lineNumberAreaWidth(), 0);}protected:void paintEvent(QPaintEvent *event) override {mCodeEditor->lineNumberAreaPaintEvent(event);}private:CodeEditor *mCodeEditor;};#endif // CODEEDITOR_H
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。