Qt 代码编辑器在右侧区域显示行号

Qt Code editor display the line number in an area to the RIGHT

我刚学Qt。我想显示 QPlainTextEdit 的行号。我发现 this link 它奏效了。但是现在我希望编辑器在区域的右侧显示行号以进行编辑。一直在找google,解决不了。如何解决?

在您的 link 中,它向您展示了如何在左侧绘制行号区域:

void CodeEditor::resizeEvent(QResizeEvent *e)
{
    QPlainTextEdit::resizeEvent(e);

    QRect cr = contentsRect();
    lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height()));
}

为了从右侧绘制行号,您将(未经测试)执行如下操作:

void CodeEditor::resizeEvent(QResizeEvent *e)
{
    QPlainTextEdit::resizeEvent(e);

    QRect cr = contentsRect();
    lineNumberArea->setGeometry(QRect(cr.right() - lineNumberArea->width() , cr.top(), lineNumberAreaWidth(), cr.height()));
}

除了GPPK的答案,你还需要改变viewport margins:

void CodeEditor::updateLineNumberAreaWidth(int /* newBlockCount */)
{
   setViewportMargins(0, 0, lineNumberAreaWidth(), 0);
}

GPPK 的代码将正确的绘图矩形分配给 sub-widget,我的代码确保滚动视图不会绘制到该区域。