paintEvent 绘制表格单元格的样式
时间: 2023-11-03 15:06:04 浏览: 97
在绘制表格单元格的样式时,可以重写QWidget的paintEvent方法。在该方法中,可以使用QPainter对象绘制单元格的背景、边框、文本等。
以下是一个简单的示例:
```python
from PyQt5.QtWidgets import QWidget, QApplication, QTableWidget, QTableWidgetItem
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt
class MyTableWidget(QTableWidget):
def __init__(self, rows, columns):
super().__init__(rows, columns)
self.initUI()
def initUI(self):
self.horizontalHeader().hide()
self.verticalHeader().hide()
self.setShowGrid(False)
self.setEditTriggers(QTableWidget.NoEditTriggers)
self.setFixedHeight(200)
self.setFixedWidth(400)
for row in range(self.rowCount()):
for col in range(self.columnCount()):
item = QTableWidgetItem()
item.setText("Row {} Col {}".format(row, col))
self.setItem(row, col, item)
def paintEvent(self, event):
painter = QPainter(self.viewport())
painter.setRenderHint(QPainter.Antialiasing)
for row in range(self.rowCount()):
for col in range(self.columnCount()):
rect = self.visualRect(self.model().index(row, col))
painter.fillRect(rect, QColor(245, 245, 245))
pen = QPen(Qt.black)
pen.setWidth(1)
painter.setPen(pen)
painter.drawRect(rect)
super().paintEvent(event)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
table = MyTableWidget(5, 5)
table.show()
sys.exit(app.exec_())
```
在上面的示例中,重写了QTableWidget的paintEvent方法,使用QPainter对象绘制了单元格的背景和边框。在绘制时,先使用visualRect方法获取单元格的矩形区域,然后使用fillRect方法填充背景色,使用drawRect方法绘制边框。
阅读全文