2013-11-12 3 views
0

Извините, я знаю, что вопрос уже задан раньше, однако у меня действительно не может быть решения для меня.Как узнать, какой QPushButton в QTableWidget

Моя ситуация очень простая: у меня есть табличное представление, и в каждой строке у меня есть QPushButtons. Трудность для меня заключается в том, чтобы узнать, какая кнопка была нажата.

Я читал о Mappers, но это не работает. Затмение не устраивает, 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) 

Я знаю, что это неправильно или некоторые строки не хватает, но я пробовал много решений. Благодаря уважением Этьена

+0

ты хочешь узнать в слоте, какая кнопка нажата? – Tab

+1

Какая ошибка? Ваш код выглядит правильно, за исключением того, что вы, вероятно, хотите подключиться к одному из сигналов 'сопоставленного()' сигнатурного картографа для получения кликов. –

ответ

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) 
Смежные вопросы