pyqt5 在QLineEdit(也就是搜索框)文本改变的时候出现QListWidget,在鼠标焦点不在QLineEdit时,隐藏QListWidget
时间: 2023-05-15 13:06:46 浏览: 516
QTreeview实现搜索功能查找功能
5星 · 资源好评率100%
可以使用 QLineEdit 的 textChanged 信号来监听文本改变事件,然后在槽函数中根据文本内容更新 QListWidget 的显示内容,并设置其可见性。当鼠标焦点不在 QLineEdit 上时,可以在失去焦点的信号中隐藏 QListWidget。
以下是示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QListWidget, QVBoxLayout
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.search_box = QLineEdit()
self.search_box.textChanged.connect(self.update_list)
self.list_widget = QListWidget()
self.list_widget.hide()
layout = QVBoxLayout()
layout.addWidget(self.search_box)
layout.addWidget(self.list_widget)
self.setLayout(layout)
self.setFocusPolicy(Qt.StrongFocus)
self.search_box.installEventFilter(self)
def eventFilter(self, obj, event):
if obj == self.search_box and event.type() == Qt.FocusOut:
self.list_widget.hide()
return super().eventFilter(obj, event)
def update_list(self, text):
if text:
self.list_widget.clear()
# 根据文本内容更新 QListWidget 的显示内容
# ...
self.list_widget.show()
else:
self.list_widget.hide()
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
注意:这只是示例代码,具体实现方式可能因应用场景而异。
阅读全文