2009-10-06 4 views
3

나는 동적으로 QTableWidget에의 ContextMenu 추가 해요 :PyQt는 상황에 맞는 메뉴

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가) 수신 볼 수있는 재생 목록 이름, DB에서 반입되고 그게 전부입니다 모든 조치는 서로 다릅니다. 내 addToPlaylistAction 함수에서 클릭 한 메뉴를 어떻게 결정합니까?

답변

3

QAction.setData을 사용하여 슬롯을 추가 할 슬롯을 알 수 있도록 일부 데이터를 설정할 수 있습니다. 그런 다음 슬롯에서 self.sender()으로 전화를 걸어 신호를 트리거 한 작업을 가져오고 action.data()을 사용하여 데이터를 다시 가져올 수 있습니다.

+0

sender()를 사용하는 경우 sender()가 유효한 내용을 반환하도록 항상 함수가 슬롯으로 호출된다는 점에 유의하십시오. –

5

정확한 방법은 signal mapper을 사용하는 것입니다. 각 발신자에게 데이터를 할당하고 해당 데이터로 신호를 얻을 수 있습니다.

+0

http://pysnippet.blogspot.com/2010/06/qsignalmapper-at-your-service.html에서 좋은 예를 발견했습니다. –