سؤال

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