您好,要在 QTableWidget 单元格中居中显示控件,可以通过以下步骤实现:
- 创建一个自定义的单元格部件(QWidget),并将需要居中显示的控件添加到该部件上;
- 在 QTableWidget 的 setCellWidget() 方法中,将自定义部件作为参数传递给该方法;
- 重写自定义部件的 paintEvent() 方法,在其中使用 QPainter 将控件绘制在居中位置。
以下是示例代码:
class CenteredWidget(QWidget):
def __init__(self, widget, parent=None):
super().__init__(parent)
layout = QHBoxLayout(self)
layout.addWidget(widget)
layout.setAlignment(Qt.AlignCenter)
def paintEvent(self, event):
painter = QPainter(self)
painter.translate((self.width() - self.widget().width()) / 2,
(self.height() - self.widget().height()) / 2)
self.widget().render(painter)
table = QTableWidget()
widget = QPushButton("Click me!")
centered_widget = CenteredWidget(widget)
table.setCellWidget(0, 0, centered_widget)
在上面的代码中,我们创建了一个名为 CenteredWidget 的自定义部件,它接受一个需要居中显示的控件作为参数。我们使用 QHBoxLayout 将该控件添加到布局中,并将布局水平和垂直方向都居中对齐。在 paintEvent() 方法中,我们使用 QPainter 将控件绘制在居中位置。
最后,在主程序中,我们创建了一个 QPushButton 控件,并将其添加到一个 CenteredWidget 中。然后,我们将该自定义部件作为参数传递给 QTableWidget 的 setCellWidget() 方法,以在单元格中居中显示控件。