簡體   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