Qtableview 设置单元格 item样式
时间: 2023-08-24 14:06:10 浏览: 97
设定DataGridView的单元格Style
5星 · 资源好评率100%
如果想在 Qt 的 QTableView 中设置单元格的样,可以通过自定义 QStyledItemDelegate 类来实现。以下是一个简单的示例:
```python
from PyQt5.QtWidgets import QStyledItemDelegate, QStyleOptionViewItem, QApplication, QTableView, QWidget
from PyQt5.QtCore import Qt, QAbstractTableModel, QModelIndex
class CustomDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
# 自定义绘制单元格的样式
painter.save()
if option.state & QStyle.State_Selected:
painter.fillRect(option.rect, option.palette.highlight())
painter.drawText(option.rect, Qt.AlignCenter, str(index.data()))
painter.restore()
class MyTableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self._data = data
def rowCount(self, parent):
return len(self._data)
def columnCount(self, parent):
return len(self._data[0])
def data(self, index, role):
if role == Qt.DisplayRole:
return self._data[index.row()][index.column()]
return None
if __name__ == '__main__':
app = QApplication([])
table = QTableView()
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
model = MyTableModel(data)
delegate = CustomDelegate()
table.setModel(model)
table.setItemDelegate(delegate)
table.show()
app.exec_()
```
在这个示例中,我们定义了一个名为 `CustomDelegate` 的 QStyledItemDelegate 子类,重写了 `paint` 方法,实现了自定义绘制单元格的样式。在 `MyTableModel` 类中,我们实现了一个简单的表格模型,用于在表格中显示数据。最后,我们将自定义的代理设置给表格视图,这样就可以在表格中显示自定义的单元格样式了。
阅读全文