C++ (Qt)void mySlot(){ QAction *action = qobject_cast<QAction *>(sender()); if (action) { // делаешь что нужно }}
C++ (Qt)Q_DECLARE_METATYPE(QWidget*)QAction* a = menu.addAction( ... );a->setData( QVariant::fromValue( clientWidget ) );
C++ (Qt)QAction* a = qobject_cast< QAction* >( sender() );QWidget* clientWidget = a->data().value< QWidget* >();
C++ (Qt)QMenu menu;QAction* a = 0;QMap< int, QAction* > al;enum { Item1, Item2, ..., ItemN };bool item_is_enabled = true; al[Item1] = a = menu.addAction( tr( "Item 1" ) );a->setEnabled( item_is_enabled );...if( a ) menu.addSeparator(); al[ItemN] = a = menu.addAction( tr( "Item N" ) );a->setEnabled( !item_is_enabled ); ... switch( al.key( menu.exec( QCursor::pos() ), -1 ) ){ case Item1: break; ... case ItemN: break;}