我正在编写一个简单的文本编辑器客户端,该客户端以块为单位接收给定的文件,而不是一次读取所有文件。例如,如果我有一个10,000行的文件,则在客户端中打开它时,我只会得到前25行+一些倾斜。当我向下滚动文件时,它将动态加载可见的行。
在文件中滚动时,我可以动态插入文件内容。但是,我希望QScrollBar能够在打开文件时反映文件的完整大小,而不只是QTextDocument的当前内容。
此处为屏幕截图形式:
最初只用第一行代码加载文件时的QTextEdit和QScrollBar。
同样的事情,一旦我滚动到文件的底部并加载了其余文件。
请注意较小的QScrollBar
滑块。
我想知道是否存在某种方式来预设基础画布的大小,即,可以很容易地计算出整个文档的高度(以像素为单位),然后使QTextEdit滚动区域达到该大小。最好不必求助于绘画。也欢迎其他任何想法。
答案 0 :(得分:0)
您需要首先以编程方式设置垂直滚动条的范围:
textEdit->verticalScrollBar()->setMaximum(numberOfLines);
有关更多详细信息,请参见文档:QAbstractSlider::setMaximum()
此外,当发出QAbstractSlider::sliderMoved(int)
信号时,您可能需要实现自定义行为。这个想法是让您的画布很小,只在全文上提供一个小窗口。