pyqt 在表格中插入按钮

pyqt 在表格中插入按钮

在 QStandardItemModel 中插入按钮可以通过使用 setIndexWidget() 方法实现。该方法可以在指定的 QModelIndex 上设置一个小部件,并在该位置显示该小部件。可以使用 model.index() 方法获取特定单元格的 QModelIndex,然后使用 setIndexWidget() 方法在该位置添加按钮。

以下是一个示例代码片段,演示如何在 QStandardItemModel 中插入按钮:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        
        # 创建 QStandardItemModel 并填充数据
        self.model = QStandardItemModel()
        self.model.setHorizontalHeaderLabels(['Name', 'Age', 'Button'])
        for row in range(3):
            for column in range(3):
                item = QStandardItem(str(row * 3 + column + 1))
                self.model.setItem(row, column, item)

        # 创建表格视图
        self.tableView = QTableView()
        self.tableView.setModel(self.model)
        # 在最后一列插入按钮
        for row in range(3):
            btn = QPushButton('Button')
            btn.setProperty('row', row)
            btn.setProperty('column', 2)
            btn.clicked.connect(self.on_button_clicked)
            index = self.model.index(row, 2, QModelIndex())
            self.tableView.setIndexWidget(index, btn)
        # 将表格视图添加到窗口中
        layout = QHBoxLayout(self)
        layout.addWidget(self.tableView)
        self.setLayout(layout)

    def on_button_clicked(self):
        sender = self.sender()
        row = sender.property('row')
        column = sender.property('column')
        index = self.model.index(row, column, QModelIndex())
        print(f'Button clicked at row {row}, column {column}, value is {self.model.data(index, Qt.DisplayRole)}')


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在此示例中,我们创建了一个 QStandardItemModel 对象并在其中填充了一些数据。我们在表格的最后一列中插入了按钮,使用 setIndexWidget() 方法设置按钮小部件。在按钮的 clicked 信号中,我们获取了按钮的行、列和模型索引,并打印了相应单元格的值。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值