pyqt给QTableView添加按钮控件

本文介绍了如何在QTableView中为表格的最后一列添加操作按钮,如增删改查和下载。通过创建自定义的QItemDelegate子类MyButtonDelegate,并在QTableView中设置这个委托,实现了在指定列显示按钮的功能。当点击下载按钮时,会触发downloadButtonClicked方法。这个方法可以自定义实现相应的下载逻辑。
摘要由CSDN通过智能技术生成

      我们经常会在表格的最后添加一些操作,比如增删改查下载等等,我们可以这样在QTableView中添加按钮:

1、创建一个按钮类:

class MyButtonDelegate(QItemDelegate):
    def __init__(self, parent=None):
        super(MyButtonDelegate, self).__init__(parent)

    def paint(self, painter, option, index):
        if not self.parent().indexWidget(index):
            button_read = QPushButton(
                self.tr('Excel'),
                self.parent(),
                clicked=self.parent().downloadButtonClicked
            )
            button_read.index = [index.row(), index.column()]
            h_box_layout = QHBoxLayout()
            h_box_layout.addWidget(button_read)
            h_box_layout.setContentsMargins(0, 0, 0, 0)
            h_box_layout.setAlignment(Qt.AlignCenter)
            widget = QWidget()
            widget.setLayout(h_box_layout)
            self.parent().setIndexWidget(
                index,
                widget
            )

2、定义一个表格类:

class MyTableView(QTableView):
    def __init__(self, parent=None, btn_col: int = 5):
        super(MyTableView, self).__init__(parent)
        self.setItemDelegateForColumn(btn_col, MyButtonDelegate(self))

        # 下载

    def downloadButtonClicked(self):
        print("你好")

这里的self.setItemDelegateForColumn(btn_col, MyButtonDelegate(self))就是你要添加按钮位置的代码,我这里是添加到表格的第六列

3、将这段代码根据需求添加到你自己写的代码里,我这里下边还有一个类,就不详细写了,如果还有什么疑问可以问我:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值