Qt firstVisibleBlock const是受保护的错误

时间:2013-09-09 22:54:23

标签: c++ qt

我正在按照本教程在我正在制作的程序中实现代码编辑器 enter link description here

我陷入了“lineNumberPaintEvent”方法。这就是我所拥有的

void LineNumbers::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.fillRect(event->rect(), NUMBER_LINE_COLOR);

    QTextBlock block    = parent->armaEdit->firstVisibleBlock();
    int blockNumber     = block.blockNumber();
}

其中“armaEdit”是另一个类中的QPlainTextEdit小部件。 当我尝试运行它时,我收到以下错误:

error: 'QTextBlock QPlainTextEdit::firstVisibleBlock() const' is protected

我还没有遇到过这个错误,我也不知道是什么意思,或者我做错了什么。有人可以指出我的错误吗?

1 个答案:

答案 0 :(得分:3)

受保护的方法是类的作者使用“protected”关键字标记的方法。它只能访问类的子类(即在本例中为QPlainTextEdit的子类中的代码)。

通常这表示您不应该调用该方法,因为它不适用于除QPlainTextEdit或其子类之外的任何代码。

如果你真的需要调用它,你可以创建一个QPlainTextEdit的子类,并从该子类的方法中调用firstVisibleBlock()。