Qt的Mac HUD窗口

时间:2009-09-28 21:21:33

标签: cocoa qt

我正在尝试在Qt中创建一个NSPanel的HUD。我正在使用qt文档中建议的QMacCocoaViewContainer。

在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 个答案:

答案 0 :(得分:1)

听起来这个类应该拥有一个视图,而不是一个窗口。 NSPanel是一个窗口,因此将它提供给想要视​​图的东西是行不通的。

创建视图并将其提供给视图容器,或使用带窗口的等效类。