3

contextmenu を 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() は、db からフェッチされるプレイリスト名です。1 つの関数 (addToPlaylistAction) だけが異なるアクションからすべてのトリガーを受け取ることがわかります。addToPlaylistAction 関数で、どのメニューがクリックされたかを判断するにはどうすればよいですか?

4

2 に答える 2

5

正しい方法は、シグナル マッパーを使用することです。各送信者にデータを割り当て、そのデータでシグナルを取得できます。

于 2009-10-06T13:24:40.173 に答える
3

QAction.setDataスロットが追加するプレイリストを認識できるように、いくつかのデータを設定するために使用できます。次に、スロットから呼び出しself.sender()てシグナルをトリガーしたアクションを取得し、使用action.data()してデータを取得できます。

于 2009-10-06T08:52:15.013 に答える