qcombobox添加复选框
时间: 2023-10-05 19:11:23 浏览: 150
要在QComboBox中添加复选框,可以使用QComboBox的setItemDelegate()方法来设置一个自定义的QItemDelegate,然后在该delegate中使用QCheckBox来实现复选框。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QComboBox, QStyledItemDelegate, QStyleOptionViewItem, QCheckBox
class CheckBoxDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
if index.data():
option.features |= QStyleOptionViewItem.HasCheckIndicator
super().paint(painter, option, index)
def editorEvent(self, event, model, option, index):
if event.type() == event.MouseButtonRelease:
if event.button() == Qt.LeftButton:
model.setData(index, not index.data(), Qt.EditRole)
return super().editorEvent(event, model, option, index)
app = QApplication([])
combo = QComboBox()
combo.addItem("Item 1")
combo.addItem("Item 2")
combo.addItem("Item 3")
combo.setItemDelegate(CheckBoxDelegate())
combo.show()
app.exec_()
```
在上面的代码中,我们创建了一个CheckBoxDelegate类,该类继承自QStyledItemDelegate,并覆盖了paint()和editorEvent()方法。paint()方法用于在每个项中绘制复选框,而editorEvent()方法用于捕获鼠标事件并在单击时切换复选框状态。
然后,我们创建了一个QComboBox并添加了一些项。最后,我们将自定义的CheckBoxDelegate设置为QComboBox的itemDelegate(),以便它可以在每个项中显示复选框。
阅读全文