为一个qlabel添加点击出现QAbstractItemView
时间: 2023-07-16 13:14:09 浏览: 133
要为一个QLabel添加点击事件,可以使用QLabel的mousePressEvent()方法。在该方法中创建一个QAbstractItemView并显示它。
以下是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QLabel, QAbstractItemView, QListView, QHBoxLayout, QWidget
class ClickableLabel(QLabel):
def __init__(self, parent=None):
super().__init__(parent)
def mousePressEvent(self, event):
# 点击时创建一个QListView并显示它
list_view = QListView()
list_view.setWindowFlags(Qt.Popup)
list_view.setSelectionMode(QAbstractItemView.SingleSelection)
list_view.setModel(model)
list_view.setGeometry(self.geometry().x(), self.geometry().y() + self.geometry().height(),
self.geometry().width(), 100)
list_view.show()
if __name__ == '__main__':
app = QApplication([])
widget = QWidget()
layout = QHBoxLayout()
widget.setLayout(layout)
label = ClickableLabel('点击我')
layout.addWidget(label)
model = QStringListModel()
model.setStringList(['选项1', '选项2', '选项3'])
widget.show()
app.exec_()
```
在上面的代码中,我们创建了一个ClickableLabel类,它继承自QLabel,并重写了mousePressEvent()方法。在该方法中,创建一个QListView,并设置它的窗口标志为Qt.Popup,这样就可以将它显示为弹出窗口。然后设置QListView的位置和大小,并显示它。我们还使用了一个QStringListModel作为QListView的数据模型。最后,将ClickableLabel添加到水平布局中,并显示窗口。
你可以根据需要修改QListView的样式和内容。
阅读全文