I'm sorry, I know the question has already been asked before, however, I really can't have a solution for me.

My situation is very basic : I have a tableview and in each row I have some QPushButtons. The difficulty for me is to know which button has been clicked.

I've read about Mappers, ... but it doesn't work. Eclipse is not happy, exeception, ...

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)

I know this is wrong or some lines are missing, but I tried a lot of solutions. Thanks Regards Etienne

有帮助吗?

解决方案

Use a 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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top