2009-09-28 171 views
0

我正在尝试创建一个HUD,它是Qt中的NSPanel。按照qt文档中的建议使用QMacCocoaViewContainer。Qt中的Mac HUD窗口

在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是一个窗口,因此将它提供给需要查看的内容是行不通的。

要么创建一个视图并将其提供给视图容器,要么使用需要一个窗口的等价类。