QTextEdit“预分配”画布大小

时间:2018-07-10 13:43:40

标签: c++ qt qtextedit

我正在编写一个简单的文本编辑器客户端,该客户端以块为单位接收给定的文件,而不是一次读取所有文件。例如,如果我有一个10,000行的文件,则在客户端中打开它时,我只会得到前25行+一些倾斜。当我向下滚动文件时,它将动态加载可见的行。

在文件中滚动时,我可以动态插入文件内容。但是,我希望QScrollBar能够在打开文件时反映文件的完整大小,而不只是QTextDocument的当前内容。

此处为屏幕截图形式:

最初只用第一行代码加载文件时的QTextEdit和QScrollBar。

同样的事情,一旦我滚动到文件的底部并加载了其余文件。

请注意较小的QScrollBar滑块。

我想知道是否存在某种方式来预设基础画布的大小,即,可以很容易地计算出整个文档的高度(以像素为单位),然后使QTextEdit滚动区域达到该大小。最好不必求助于绘画。也欢迎其他任何想法。

1 个答案:

答案 0 :(得分:0)

您需要首先以编程方式设置垂直滚动条的范围:

textEdit->verticalScrollBar()->setMaximum(numberOfLines);

有关更多详细信息,请参见文档:QAbstractSlider::setMaximum()

此外,当发出QAbstractSlider::sliderMoved(int)信号时,您可能需要实现自定义行为。这个想法是让您的画布很小,只在全文上提供一个小窗口。