QLineEdit下利用QListWidget显示类似菜单功能
时间: 2023-05-15 09:06:42 浏览: 258
Qt下使用ListWidget
5星 · 资源好评率100%
可以使用QListWidget的addItem()方法添加菜单项,然后使用QLineEdit的textChanged()信号和QListWidget的itemClicked()信号来实现菜单的显示和选择。具体实现可以参考以下代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QListWidget, QVBoxLayout
class MenuWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.menu = QListWidget()
self.menu.addItem('菜单项1')
self.menu.addItem('菜单项2')
self.menu.addItem('菜单项3')
self.menu.itemClicked.connect(self.on_item_clicked)
layout = QVBoxLayout()
layout.addWidget(self.menu)
self.setLayout(layout)
def on_item_clicked(self, item):
text = item.text()
self.parent().setText(text)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.edit = QLineEdit()
self.menu = MenuWidget(self)
self.edit.textChanged.connect(self.show_menu)
layout = QVBoxLayout()
layout.addWidget(self.edit)
self.setLayout(layout)
def show_menu(self, text):
if text:
self.menu.show()
else:
self.menu.hide()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这个例子中,我们创建了一个MenuWidget类来显示菜单项,然后在MainWindow中使用QLineEdit和MenuWidget来实现菜单的显示和选择。当用户在QLineEdit中输入文本时,如果文本不为空,就显示菜单,否则隐藏菜单。当用户选择菜单项时,将菜单项的文本设置为QLineEdit的文本。
阅读全文