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