[英]QTextEdit how to keep currently selected text line at the same position on the screen in pyqt5
这已在QTextEdit 如何将当前选定的文本行保持在屏幕上的同一位置得到回答,但它是在 c++ 中并且它使用了一个指针(我猜?)。 我的问题是,如何在 python 中执行完全相同的功能?
这是我的代码:
def moveScrollBar(self):
cursorPos = self.textLabel.cursorRect().top()
scrollbar = self.textLabel.verticalScrollBar()
scrollbar.setValue(scrollbar.value() + cursorPos - 2)
self.textLabel.setVerticalScrollbar(scrollbar)
请注意,我添加了最后一行,认为它会使其正常工作,但它却给了我一个错误:
QObject::connect: No such signal QObject::valueChanged(int)
QObject::connect: No such signal QObject::rangeChanged(int,int)
我将它连接到 cursorPositionChanged() 的方式是这样的:
self.textLabel.cursorPositionChanged.connect(self.moveScrollBar)
self.textLabel.setVerticalScrollbar(scrollbar)
不可能,因为setVerticalScrollbar
方法需要一个 int。 所以你可以直接使用
self.textLabel.setVerticalScrollbar(scrollbar.value() + cursorPos - 2)
代替
scrollbar.setValue(scrollbar.value() + cursorPos - 2)
请注意cursorPos
和目标位置-2
以像素为单位。 目标位置可能选错了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.