Pergunta

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

Foi útil?

Solução

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top