2009-09-28 5 views
0

J'essaye de créer un HUD qui est un NSPanel dans Qt. J'utilise QMacCocoaViewContainer comme suggéré dans la documentation qt.Fenêtre Mac HUD dans Qt

Dans HUD.h

#import <QWidget> 
#import <QMacCocoaViewContainer> 


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

Dans 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]; 
    } 

Chaque fois que je le lance mais je reçois une erreur disant [fenêtre NSPanel]: sélecteur non reconnu envoyé à l'instance 0x21231f0. Est-ce que quelqu'un a eu de la chance en mélangeant Qt et Cocoa? Des astuces que vous avez utilisées pour le faire fonctionner?

Répondre

1

Il semble que cette classe soit supposée posséder une vue, pas une fenêtre. Un NSPanel est une fenêtre, donc le donner à quelque chose qui veut une vue ne marchera pas.

Créez une vue et donnez-la au conteneur de vue, ou utilisez une classe équivalente qui prend une fenêtre.

Questions connexes