如何设置QListView 中item的样式
时间: 2024-05-16 22:17:46 浏览: 99
ListView列表Item样式
4星 · 用户满意度95%
QListView 中的 item 样式可以通过自定义 QStyledItemDelegate 类来实现。
以下是一个简单的示例代码,演示如何设置 QListView 中 item 的背景颜色和文本颜色:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtWidgets import QStyledItemDelegate, QListView, QApplication
class MyDelegate(QStyledItemDelegate):
def __init__(self, parent=None):
super().__init__(parent)
def paint(self, painter, option, index):
# 设置背景颜色
if option.state & QListView.State_Selected:
painter.fillRect(option.rect, option.palette.highlight())
else:
painter.fillRect(option.rect, QColor(240, 240, 240))
# 设置文本颜色
if option.state & QListView.State_Selected:
painter.setPen(option.palette.highlightedText().color())
else:
painter.setPen(QColor(0, 0, 0))
painter.drawText(option.rect, Qt.AlignLeft, index.data())
if __name__ == '__main__':
app = QApplication([])
view = QListView()
delegate = MyDelegate(view)
view.setItemDelegate(delegate)
model = QStringListModel()
model.setStringList(['item1', 'item2', 'item3'])
view.setModel(model)
view.show()
app.exec_()
```
在上面的代码中,我们创建了一个 MyDelegate 类来自定义 item 样式。在 paint 函数中,我们根据 item 是否被选中来设置不同的背景颜色和文本颜色。最后将该 delegate 设置为 QListView 的 itemDelegate 即可。
阅读全文