문제

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