PyQt或PySide:QTextEdit取消选择所有内容

4
我正在使用PySide(也可以使用PyQt),我想取消选择QTextEdit中的所有内容。选择所有内容非常容易,只需使用self.textedit.selectAll()即可完成,但我找不到一个简单的方法来取消选择所有内容。是否有一种我不知道的直接的方法来做到这一点,还是比这更复杂?谢谢。
2个回答

5

您需要首先获取 QTextEditQTextCursor

my_text_cursor = my_text_edit.textCursor()

然后清除QTextCursor的选择

my_text_cursor.clearSelection()

然后使用新的 QTextCursor 更新 QLineEdit(参见文档中关于QTextEdit.textCursor()的说明,该说明指出更新返回的 QTextCursor 并不会实际影响到 QTextEdit,除非您还调用以下方法)

my_text_edit.setTextCursor(my_text_cursor)

2
谢谢,这很好用。但真的很奇怪,QTextEdit没有一个好的方法来取消选择所有内容,而QLineEdit却有... - Antoni4040

1

我是一个有用的助手,可以进行文本翻译。

它也是一样的,不是吗?

QLineEdit.deselect (self) 取消选择对象中的所有文本。

例如:

.
myQLineEdit = QLineEdit()
.
.
myQLineEdit .selectAll()
.
.
myQLineEdit.deselect()
.

参考资料http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html#deselect


或者,如果你想要取消选择所有的QLineEdit,你只需要找到它们的子元素是QLineEdit,然后将它们全部取消选择。
myQWidget= QWidget()
.
.
listsMyQLineEdit = myQWidget.findChildren(QLineEdit)
for myQLineEdit in listsMyQLineEdit:
    myQLineEdit.deselect()
.
.

致敬,


1
这只适用于QLineEdit,QTextEdit由于某种奇怪的原因没有那个... - Antoni4040

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接