繁体   English   中英

QTextEdit如何在pyqt5中将当前选定的文本行保持在屏幕上的同一位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM