Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML class menuWrapperPrivate ; // Forward declaration @ interface menuWrapperProxy : NSObject { @ private menuWrapperPrivate * wrap; } - ( void ) emitSayHelloRequested; //, Obj-C - ( menuWrapperPrivate *) getQtProxy; // QObject . Qt . @end
Copy Source | Copy HTML
- class menuWrapperPrivate : public QObject
- {
- Q_OBJECT
- public :
- TrayMenu * menu;
- signals:
- void sayHello ();
- public slots:
- void privateWrapperSlot () {emit sayHello ();};
- };
Copy Source | Copy HTML
- @implementation menuWrapperProxy
- - (id) init
- {
- if ((self = [super init])) {
- wrap = new menuWrapperPrivate (); // C ++ initialization
- wrap-> menu = [[TrayMenu alloc] init]; // Objective-C initialization
- [NSApp setDelegate: wrap-> menu];
- [wrap-> menu setParent: self];
- }
- return self;
- }
- // message transmitter
- - ( void ) emitSayHelloRequested
- {
- wrap-> privateWrapperSlot (); // C ++ call
- }
- - ( menuWrapperPrivate *) getQtProxy
- {
- return wrap;
- }
- @end
Copy Source | Copy HTML
- @ interface TrayMenu : NSObject {
- @ private
- NSStatusItem * _statusItem;
- menuWrapperProxy * _parent;
- }
- - ( void ) setParent: (menuWrapperProxy *) parent;
- @end
Copy Source | Copy HTML
- @implementation TrayMenu
- // The source of the callback itself.
- - ( void ) onMyRequest: (id) sender {
- [_parent emitSayHelloRequested];
- }
- - ( void ) actionQuit: (id) sender {
- [NSApp terminate: sender];
- }
- - (NSMenu *) createMenu {
- NSZone * menuZone = [NSMenu menuZone];
- NSMenu * menu = [[NSMenu allocWithZone: menuZone] init];
- NSMenuItem * menuItem;
- menuItem = [menu addItemWithTitle: @ " say hello"
- action: @selector (onMyRequest :)
- keyEquivalent: @ "" ];
- [menuItem setTarget: self];
- [menu addItem: [NSMenuItem separatorItem]];
- menuItem = [menu addItemWithTitle: @ "Quit"
- action: @selector (actionQuit :)
- keyEquivalent: @ "" ];
- [menuItem setToolTip: @ "Click to Quit this App" ];
- [menuItem setTarget: self];
- return menu;
- }
- // Overloaded function, called after resource loading
- - ( void ) applicationDidFinishLaunching: (NSNotification *) notification {
- NSMenu * menu = [self createMenu];
- _statusItem = [[[NSStatusBar systemStatusBar] // Get to the statusbar
- statusItemWithLength: NSVariableStatusItemLength] retain];
- [_statusItem setMenu: menu];
- [_statusItem setTitle: @ "Menu" ];
- [_statusItem setHighlightMode: YES];
- [_statusItem setToolTip: @ "Test Tray" ];
- [menu release];
- }
- - ( void ) setParent: (menuWrapperProxy *) parent
- {
- _parent = parent;
- }
- @end
Copy Source | Copy HTML
- menuWrapperProxy * mwp = [[menuWrapperProxy alloc] init];
- menuWrapperPrivate * signalWrapper = [mwp getQtProxy];
- QMessageBox * box = new QMessageBox (0);
- connect (signalWrapper, SIGNAL (sayHello ()), box, SLOT ( exec ()));
Source: https://habr.com/ru/post/64822/
All Articles