2009-09-28 116 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是一個窗口,因此將它提供給需要查看的內容是行不通的。

要麼創建一個視圖並將其提供給視圖容器,要麼使用需要一個窗口的等價類。