<p>我已经对QPlainTextEdit进行了子类化,并包含了这些函数来添加文本选择功能。我还添加了占位符文本删除第一次点击和光标放置在任何地方,你想在文本。您只需为占位符删除的第一个输入设置标志。这也适用于qtextedt。</p>
<pre><code>class MyTextEdit(QtGui.QPlainTextEdit):
def __init__(self, parent = None):
super(MyTextEdit, self).__init__(parent)
self.is_first_input = True
def mousePressEvent(self, event):
if self.is_first_input:
self.selectAll()
self.clear()
self.is_first_input = False
else:
pass
if event.button() == QtCore.Qt.LeftButton:
self.startCursorPosition = event.pos()
cursor = self.cursorForPosition(self.startCursorPosition)
self.startPosition = cursor.position()
def mouseMoveEvent(self, event):
if event.button() == QtCore.Qt.NoButton:
self.endCursorPosition = event.pos()
cursor = self.cursorForPosition(self.endCursorPosition)
position = cursor.position()
cursor.setPosition(self.startPosition)
cursor.setPosition(position, QtGui.QTextCursor.KeepAnchor)
self.setTextCursor(cursor)
def mouseReleaseEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.endCursorPosition = event.pos()
cursor = self.cursorForPosition(self.endCursorPosition)
position = cursor.position()
cursor.setPosition(self.startPosition)
cursor.setPosition(position, QtGui.QTextCursor.KeepAnchor)
self.setTextCursor(cursor)
</code></pre>