2009-09-28 3 views
0

Я пытаюсь создать HUD, который является NSPanel в Qt. Я использую QMacCocoaViewContainer, как это предлагается в документации qt.Окно Mac HUD в Qt

В HUD.h

#import <QWidget> 
#import <QMacCocoaViewContainer> 


class HUD : public QMacCocoaViewContainer 
{ 
public: 
    HUD(QWidget* parent); 
}; 

В HUD.mm

#import "HUD.h" 
#import <Cocoa/Cocoa.h> 

    HUD::HUD(QWidget* parent) : QMacCocoaViewContainer(0,parent) 
    { 
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

     NSPanel *panel = [[NSPanel alloc] initWithContentRect: NSRectFromCGRect(CGRectMake(0,0,250,250))          
              styleMask:NSHUDWindowMask | NSTitledWindowMask | NSUtilityWindowMask       
              backing:NSBackingStoreBuffered 
              defer:YES 
              screen:[[NSApp mainWindow] screen]]; 

     setCocoaView(panel); 


     [panel release]; 
     [pool release]; 
    } 

Каждый раз, когда я запускаю его, однако я получаю сообщение об ошибке говорящее [окно NSPanel]: непризнанные селектор направил к экземпляру 0x21231f0. Неужели кому-то удавалось смешивать Qt и Cocoa? Какие трюки вы использовали, чтобы заставить его работать?

ответ

1

Звучит так, как будто этот класс должен иметь вид, а не окно. NSPanel - это окно, поэтому придание ему того, что хочет, просмотр не будет работать.

Либо создайте представление и дайте это контейнеру представления, либо используйте эквивалентный класс, который принимает окно.