在QLineEdit(也就是搜索框)文本改变的时候出现QListWidget,在鼠标焦点不在QLineEdit时,隐藏QListWidget
时间: 2023-05-16 20:06:30 浏览: 102
可以使用QLineEdit的textChanged信号来监听文本改变事件,然后在该信号的槽函数中判断鼠标焦点是否在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.initUI()
def initUI(self):
self.lineEdit = QLineEdit(self)
self.listWidget = QListWidget(self)
self.listWidget.hide()
vbox = QVBoxLayout()
vbox.addWidget(self.lineEdit)
vbox.addWidget(self.listWidget)
self.setLayout(vbox)
self.lineEdit.textChanged.connect(self.onTextChanged)
def onTextChanged(self, text):
if not self.lineEdit.hasFocus():
self.listWidget.hide()
return
# do something with text, e.g. search in database
# ...
# show the list widget
self.listWidget.show()
if __name__ == '__main__':
app = QApplication([])
w = MyWidget()
w.show()
app.exec_()
```
在onTextChanged函数中,我们首先判断鼠标焦点是否在QLineEdit上,如果不在,则隐藏QListWidget并返回。否则,我们可以在该函数中进行一些操作,比如搜索数据库等等,然后显示QListWidget。
阅读全文