我试图在QTextEdit对象中选择不同的文本。
def get_text_cursor(self):
return self.TextEdit.textCursor()
def get_text_selection(self):
cursor = self.get_text_cursor()
return cursor.selectionStart(), cursor.selectionEnd()
def set_text_selection(self, start, end):
cursor = self.get_text_cursor()
cursor.setPosition(start, end)
self.TextEdit.setTextCursor(cursor)
这段代码不起作用(get_text_selection
起作用)我也试过其他方法,但它们也不起作用。
这个问题已经在这里提过了(但还没有真正回答) Select text of textEdit object with QTextCursor, QTextEdit
工作代码,感谢ekhurvo
# text cursor functions
def get_text_cursor(self):
return self.TextEdit.textCursor()
def set_text_cursor_pos(self, value):
tc = self.get_text_cursor()
tc.setPosition(value, QtGui.QTextCursor.KeepAnchor)
self.TextEdit.setTextCursor(tc)
def get_text_cursor_pos(self):
return self.get_text_cursor().position()
def get_text_selection(self):
cursor = self.get_text_cursor()
return cursor.selectionStart(), cursor.selectionEnd()
def set_text_selection(self, start, end):
cursor = self.get_text_cursor()
cursor.setPosition(start)
cursor.setPosition(end, QtGui.QTextCursor.KeepAnchor)
self.TextEdit.setTextCursor(cursor)
您可以在https://github.com/cloudformdesign/SearchTheSky看到这段代码正在运行
对于QTextEdit,所选内容由当前位置和锚定来划分。但令人困惑的是,尽管QTextCursor有一个用于设置当前位置的
setPostion
方法,但没有相应的setAnchor
方法来设置锚定。因此,您必须使用特殊标志调用setPostion
两次:我已经对QPlainTextEdit进行了子类化,并包含了这些函数来添加文本选择功能。我还添加了占位符文本删除第一次点击和光标放置在任何地方,你想在文本。您只需为占位符删除的第一个输入设置标志。这也适用于qtextedt。
相关问题 更多 >
编程相关推荐