pyqt给QTableView添加按钮控件

      我们经常会在表格的最后添加一些操作,比如增删改查下载等等,我们可以这样在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、将这段代码根据需求添加到你自己写的代码里,我这里下边还有一个类,就不详细写了,如果还有什么疑问可以问我:

pyqt给QTableView添加按钮控件_第1张图片

 

你可能感兴趣的:(Python,wpf,p2p,linq)