puqt4清除行编辑字段

2024-04-19 13:03:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建tqo行编辑,当我单击行编辑框时,我应该能够清除当前文本。在

我尝试了下面的代码,但没有成功

有人能指出这里出了什么问题吗?在

OPTIONS = ['Enter IP Address','Number of iteration']

def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, 'Details', parent=parent)
    self.options = {}
    for option in OptionBox.OPTIONS:
        self.options[option] = (QtGui.QLineEdit(option))
        self.connect(self.options[option],  QtCore.SIGNAL("clicked()"), self.clicked)
    self._gridOptions()

def clicked(self):
    QLineEdit.clear()

Tags: 代码文本self编辑initdefparentoptions
1条回答
网友
1楼 · 发布于 2024-04-19 13:03:18

您需要在QLineEdit上使用事件过滤器来捕捉其中的click事件(https://qt-project.org/doc/qt-5.1/qtcore/qobject.html#eventFilter)。下面是一个关于代码应该是什么样子的示例:

def __init__(self, parent=None):
  QtGui.QWidget.__init__(self, 'Details', parent=parent)
  self.options = {}
  for option in OptionBox.OPTIONS:
    self.options[option] = QtGui.QLineEdit(option)
    self.options[option].installEventFilter(self)
  self._gridOptions()

def eventFilter(self, object, event):
  if (object in self.options.values()) and (event.type() == QtCore.QEvent.MouseButtonPress):
    object.clear()
    return False # lets the event continue to the edit
  return False

Edit:据我所知,您只希望在QLineEdit中出现一个描述其角色的默认文本。这是一个使用placeholderText的好机会。下面是修改后使用它的代码(不再需要eventFilter方法):

^{pr2}$

相关问题 更多 >