pyqt 自定义qtablewidget, 使单元格的最右边有一条竖线
时间: 2024-09-13 16:17:30 浏览: 43
在PyQt中自定义`QTableWidget`以便在单元格的最右边添加一条竖线,你可以通过子类化`QTableWidget`并重写`paintEvent`方法来实现这个需求。下面是一个简单的示例代码:
```python
import sys
from PyQt5.QtWidgets import QTableWidget, QApplication, QHeaderView, QTableWidgetItem
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt
class CustomQTableWidget(QTableWidget):
def __init__(self, parent=None):
super(CustomQTableWidget, self).__init__(parent)
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(QPen(QColor('black'), 1)) # 使用黑色和1px宽度画笔
# 遍历每一列,绘制右侧竖线
for col in range(self.columnCount()):
# 获取列的最右端的x坐标
col_right = self.columnViewportPosition(col) + self.columnWidth(col)
# 绘制竖线
painter.drawLine(col_right, 0, col_right, self.height())
# 调用基类的paintEvent完成其余绘制工作
super(CustomQTableWidget, self).paintEvent(event)
# 创建应用和窗口
app = QApplication(sys.argv)
table = CustomQTableWidget(10, 10) # 创建一个10x10的表格
table.show()
sys.exit(app.exec_())
```
在这段代码中,我们创建了一个`CustomQTableWidget`类,它继承自`QTableWidget`。在`paintEvent`方法中,我们使用`QPainter`对象来绘制一条黑色的竖线。这个线的起点是在当前列的最右端的x坐标上,终点是相同x坐标下表格的高度位置,这样就形成了从上到下穿过整个单元格的竖线。
这段代码还会创建一个`QApplication`实例和一个`CustomQTableWidget`实例,并显示表格窗口。在实际使用时,你可以根据具体的需求调整颜色、线宽以及线的样式等。
阅读全文