【发布时间】:2020-10-22 18:08:24
【问题描述】:
我正在尝试为文本搜索和过滤完成 lineEdit,类似于 vscode 等应用程序中的那些:
Qt 的 lineedit 有一个“内置”清除按钮操作,类似于我正在寻找的操作。我查看了 qlineedits c++ 源代码并构建了一个修改后的函数,该函数添加了自定义清除操作。是否可以将多个尾随操作彼此相邻添加到类似于上面引用的示例的 lineedit?
class ULineEdit(QtWidgets.QLineEdit):
def __init__(self,
defaultText: str = "",
isReadOnly: bool = False,
isClearButtonEnabled: bool = True,
parent=None
):
super(ULineEdit, self).__init__()
self.setText(defaultText)
self.setReadOnly(isReadOnly)
self.setClearButtonEnabled(isClearButtonEnabled)
self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
# override When readOnly is set to QLineEdit it disables QToolButton (clear button)
def setClearButtonEnabled(self, enable: bool = True):
if enable == True:
clearAction = UAction.UClearAction(parent=self)
clearAction.triggered.connect(self.clear)
self.textChanged.connect(clearAction.dynamicVisibility)
self.addAction(clearAction, QtWidgets.QLineEdit.TrailingPosition)
# default state
clearAction.dynamicVisibility(self.text())
else:
clearAction = UAction.getClearAction(self)
if clearAction is not None:
self.removeAction(clearAction)
【问题讨论】: