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

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

本文关键字:区域 显示 代码 编辑器 Qt      更新时间:2023-10-16

我只是在学习Qt。我想显示QPlainTextEdit的行号。我找到了这个链接它奏效了。但是现在我希望编辑器在该区域右侧的区域显示行号以进行编辑。我一直在搜索谷歌,但我无法解决。如何解决?

除了 GPPK 的答案,您还需要更改视口边距:

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

GPPK 的代码为子小部件分配正确的绘图矩形,我的代码确保滚动视图不会绘制到该区域。

在您的链接中,它显示了它如何在左侧绘制行号区域:

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()));
}