Контекстное меню PyQt - PullRequest
       11

Контекстное меню PyQt

3 голосов
/ 06 октября 2009

Я динамически добавляю контекстное меню в QTableWidget:

playlistContenxt = QAction("Add to %s" % (currentItem.text()), self.musicTable)
playlistContenxt.setData(currentData)
self.connect(playlistContenxt, SIGNAL("triggered()"), self.addToPlaylistAction)
self.musicTable.addAction(playlistContenxt)

currentItem.text () - это имя списка воспроизведения, которое выбирается из базы данных, поскольку вы можете видеть, что только одна функция (addToPlaylistAction) получает все триггеры от различных действий. В моей функции addToPlaylistAction, как определить, какое меню было нажато?

Ответы [ 2 ]

5 голосов
/ 06 октября 2009

Правильный способ - использовать преобразователь сигнала : вы можете назначить данные каждому из отправителей и получить сигнал с этими данными.

3 голосов
/ 06 октября 2009

Вы можете использовать QAction.setData для установки некоторых данных, чтобы слот знал, к какому плейлисту добавить. Затем из слота вы можете вызвать self.sender(), чтобы получить действие, которое вызвало сигнал, и использовать action.data(), чтобы вернуть данные.

...