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