QCOmbox的item设置背景色
时间: 2024-03-27 19:40:14 浏览: 45
要设置QComboBox的item的背景色,可以使用QStyledItemDelegate类来自定义QComboBox的item样式。以下是一个例子:
```python
from PyQt5.QtWidgets import QStyledItemDelegate, QComboBox, QApplication, QStyleOptionViewItem
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt
class ComboBoxDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
painter.save()
# 绘制背景色
if option.state & QStyle.State_Selected:
painter.fillRect(option.rect, option.palette.highlight())
else:
painter.fillRect(option.rect, QColor(255, 255, 255))
# 绘制文本
painter.setPen(Qt.black)
painter.drawText(option.rect, Qt.AlignLeft | Qt.AlignVCenter, index.data())
painter.restore()
class MyComboBox(QComboBox):
def __init__(self, parent=None):
super().__init__(parent)
self.setItemDelegate(ComboBoxDelegate())
if __name__ == '__main__':
app = QApplication([])
combo = MyComboBox()
combo.addItem('Item 1')
combo.addItem('Item 2')
combo.show()
app.exec_()
```
在这个例子中,我们自定义了一个QStyledItemDelegate类来绘制QComboBox的item。在paint()方法中,我们首先绘制了背景色,如果item处于选中状态,我们使用QStyleOptionViewItem中的highlight()方法来获取选中时的背景色,否则使用白色填充背景。然后我们绘制了文本。最后,在MyComboBox的构造函数中,我们设置了自定义的item delegate。
阅读全文