您好,QTableWidget 是 Qt 中的一个表格控件,支持在单元格中放置其他的QWidget 控件。如果您想要让这些控件在单元格中居中显示,可以通过以下两种方式实现:
- 使用样式表:在 QTableWidget 上设置居中对齐的样式表即可。
table_widget.setStyleSheet("QTableWidgetItem{alignment: center;}")
- 重写 QTableWidgetItem 的 paint 方法,在里面手动绘制控件,并将其居中绘制。
class CenteredWidgetItem(QTableWidgetItem):
def __init__(self, widget):
super().__init__()
self.widget = widget
self.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
def sizeHint(self):
return self.widget.sizeHint()
def paint(self, painter, option, index):
rect = option.rect
x = rect.x() + (rect.width() - self.widget.width()) / 2
y = rect.y() + (rect.height() - self.widget.height()) / 2
painter.save()
painter.translate(x, y)
self.widget.render(painter)
painter.restore()
class MyTableWidget(QTableWidget):
def setCellWidget(self, row, column, widget):
item = CenteredWidgetItem(widget)
super().setItem(row, column, item)
以上是两种常见的实现方法,您可以根据自己的需要来选择使用哪一种。