在QLineEdit(也就是搜索框)文本改变的时候出现QListWidget,在鼠标焦点不在QLineEdit时,隐藏QListWidget
时间: 2023-05-16 21:05:57 浏览: 159
QListWidget(列表框)
可以通过以下代码实现:
```python
class MyLineEdit(QLineEdit):
def __init__(self, parent=None):
super().__init__(parent)
self.list_widget = QListWidget(self)
self.list_widget.hide()
self.textChanged.connect(self.show_list_widget)
self.list_widget.itemClicked.connect(self.select_item)
def show_list_widget(self):
if not self.text():
self.list_widget.hide()
return
self.list_widget.clear()
for i in range(10):
self.list_widget.addItem(self.text() + str(i))
self.list_widget.setGeometry(self.geometry().x(), self.geometry().y() + self.geometry().height(),
self.geometry().width(), 100)
self.list_widget.show()
def select_item(self, item):
self.setText(item.text())
self.list_widget.hide()
def focusOutEvent(self, event):
self.list_widget.hide()
super().focusOutEvent(event)
```
在这个代码中,我们继承了 QLineEdit 类,并添加了一个 QListWidget 作为搜索建议的列表。当文本改变时,我们会根据文本内容动态生成建议列表,并显示在 QLineEdit 下方。当用户点击建议列表中的某一项时,我们会将其内容设置为 QLineEdit 的文本,并隐藏建议列表。当 QLineEdit 失去焦点时,我们也会隐藏建议列表。
阅读全文