无法向文本编辑添加语法突出显示器

Can't add syntax highlighter to textedit

本文关键字:显示器 语法 添加 文本编辑      更新时间:2023-10-16

我正在开发c++和QT.我想创建文本编辑器,我有问题。

PythonSyntaxHighlighter *highlighter;
highlighter = new PythonSyntaxHighlighter(ui->editor->document());

我不能编译我的程序,因为它有四个错误:

  • 'PythonSyntaxHighlighter'未在此范围内声明

  • 'highlighter'未在此范围内声明

  • 'PythonSyntaxHighlighter'之前的预期类型说明符

  • 预期';'在'PythonSyntaxHighlighter'之前

这是我的文本编辑器。

#include "texteditor.h"
#include "ui_texteditor.h"
#include "PythonSyntaxHighlighter.h"
TextEditor::TextEditor(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::TextEditor)
{
    PythonSyntaxHighlighter *highlighter;
    highlighter = new PythonSyntaxHighlighter(ui->editor->document());
    ui->setupUi(this);
}
TextEditor::~TextEditor()
{
    delete ui;
}

更新:pythonsyntaxhighlighter.cpp: http://pastebin.com/yFvXahiXpythonsyntaxhighlighter.h: http://pastebin.com/TpR4X3sm没有匹配的函数调用'PythonSyntaxHighlighter::PythonSyntaxHighlighter(QTextDocument*)'PythonSyntaxHighlighter *pythonHighlighter = new PythonSyntaxHighlighter(ui->editor->document());

必须包含PythonSyntaxHighlighter

例如:

#include "pythonsyntaxhighlighter.h"

更新:

ui->editor->document();

这行代码返回一个指针:QTextDocument*.

你的PythonSyntaxHighlighter中的构造函数应该支持这个参数:

PythonSyntaxHighlighter::PythonSyntaxHighlighter(QTextDocument* TextDoc)
{
}
PythonSyntaxHighlighter::~PythonSyntaxHighlighter()
{
}

第二个问题:

ui->setupUi(this);
PythonSyntaxHighlighter *highlighter;
highlighter = new PythonSyntaxHighlighter(ui->editor->document());

首先设置ui,现在您可以访问ui成员!SetupUi初始化它们