Qt中qtablewidget用cellwidget添加控件,使控件在单元格居中显示

我们在给qtablewidget当中添加按钮的时候一般采用cellwidget的方式,在widget中添加布局,并在布局中添加控件:

 def buttonForRow(self):
        widget = QWidget()

        # 文件重选
        re_choose_button = QPushButton("重选文件")
        re_choose_button.clicked.connect(self.re_choose_buttonClicked)
        re_choose_button.setFixedHeight(32)
        # 上移
        up_button = QPushButton("↑↑")
        up_button.clicked.connect(self.up_buttonClicked)
        up_button.setFixedHeight(32)
        # 下移
        down_button = QPushButton("↓↓")
        down_button.clicked.connect(self.down_buttonClicked)
        down_button.setFixedHeight(32)

        # 按钮布局
        hlayout = QHBoxLayout()
        hlayout.addWidget(re_choose_button)
        hlayout.addWidget(up_button)
        hlayout.addWidget(down_button)
        hlayout.setContentsMargins(5, 2, 5, 2)  #  控件居中
        widget.setLayout(hlayout)
        return widget

效果图

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在QTableWidget的列头添加控件,需要自定义QHeaderView并将其设置为QTableWidget的水平表头。下面是完整的代码示例: ```python from PyQt5 import QtWidgets, QtGui, QtCore class MyHeader(QtWidgets.QHeaderView): def __init__(self, parent): super().__init__(QtCore.Qt.Horizontal, parent) self.setSectionResizeMode(QtWidgets.QHeaderView.Stretch) self._widget = QtWidgets.QComboBox(self) self._widget.addItems(['Option 1', 'Option 2', 'Option 3']) self.sectionResized.connect(self.adjust_widget) def setModel(self, model): super().setModel(model) self.adjust_widget() def adjust_widget(self, index=0): rect = self.sectionViewportPosition(index) height = self.height() - rect self._widget.setGeometry(rect, 0, self.sectionSize(index), height) class MyTableWidget(QtWidgets.QTableWidget): def __init__(self, parent=None): super().__init__(parent) self.setHorizontalHeader(MyHeader(self)) self.setColumnCount(3) self.setRowCount(5) for row in range(5): for col in range(3): item = QtWidgets.QTableWidgetItem(f"Item {row+1}-{col+1}") self.setItem(row, col, item) if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) window = MyTableWidget() window.show() sys.exit(app.exec_()) ``` 这个例子创建一个3列5行的表格,并在第一列的表头添加了一个下拉框控件。在MyHeader类,我们创建了一个QComboBox控件并在构造函数将其添加到自定义的表头控件。我们还在setModel和adjust_widget方法处理了控件的大小和位置。在MyTableWidget,我们将自定义的表头设置为QTableWidget的水平表头。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值