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,我的代码确保滚动视图不会绘制到该区域。
我刚学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,我的代码确保滚动视图不会绘制到该区域。