如何知道 QTableWidget 中的哪个 QPushButton

Posted

技术标签:

【中文标题】如何知道 QTableWidget 中的哪个 QPushButton【英文标题】:How to know which QPushButton in a QTableWidget 【发布时间】:2013-11-12 21:43:06 【问题描述】:

对不起,我知道这个问题之前已经被问过了,但是,我真的无法为我找到解决方案。

我的情况非常基本:我有一个表格视图,并且在每一行中我都有一些 QPushButtons。对我来说,困难在于知道点击了哪个按钮。

我读过有关 Mappers 的文章,...但它不起作用。 Eclipse 不高兴,异常,...

signalMapper = QSignalMapper()            
for row,dossier in enumerate(Dossier.listeDossiers):
  button = QPushButton("Archive")
  signalMapper.setMapping(button, row)
  QObject.connect(button, SIGNAL("clicked()"), signalMapper, SLOT("map()"))
  self.dlg.ui.tableWidget_dossiers.setCellWidget(row, 5, button)

def getArchive(self,row):
   print "Row " + str(row)

我知道这是错误的或缺少某些行,但我尝试了很多解决方案。 谢谢 问候 艾蒂安

【问题讨论】:

你想知道在槽中点击了哪个按钮吗? 错误是什么?您的代码看起来是正确的,只是您可能希望连接到信号映射器的 mapped() 信号之一以接收点击。 【参考方案1】:

使用QButtonGroup:

    self.buttonGroup = QtGui.QButtonGroup(self)
    self.buttonGroup.buttonClicked[int].connect(self.getArchive)
    for row, dossier in enumerate(Dossier.listeDossiers):
        button = QPushButton("Archive")
        self.buttonGroup.addButton(button, row)
        self.dlg.ui.tableWidget_dossiers.setCellWidget(row, 5, button)

def getArchive(self, row):
    print "Row " + str(row)

【讨论】:

以上是关于如何知道 QTableWidget 中的哪个 QPushButton的主要内容,如果未能解决你的问题,请参考以下文章

如何从qtablewidget检测单元格中单击的按钮

在 Python 中:一次将 QtableWidget 中的所有条目插入数据库表中

QT如何获取QTableWidget表格中的高亮位置的行数?

QTableWidget 信号和槽移动字段

如何从索引列表中选择 QtableWidget 中的单元格

如何获取 QTableWidget 光标下的行