【发布时间】:2016-01-20 22:18:15
【问题描述】:
我只是在学习 Qt。我想显示 QPlainTextEdit 的行号。我找到了this link 它奏效了。但是现在我希望编辑器在该区域的右侧显示一个区域中的行号以进行编辑。我一直在搜索谷歌,但我无法解决。如何解决?
【问题讨论】:
-
我已经修复了链接。
我只是在学习 Qt。我想显示 QPlainTextEdit 的行号。我找到了this link 它奏效了。但是现在我希望编辑器在该区域的右侧显示一个区域中的行号以进行编辑。我一直在搜索谷歌,但我无法解决。如何解决?
【问题讨论】:
除了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()));
}
【讨论】: