2009-09-28 3 views
0

Qt에서 NSPanel 인 HUD를 만들려고합니다. Qt 설명서에 제안 된대로 QMacCocoaViewContainer를 사용하고 있습니다. HUD.mmQt의 Mac HUD 창

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

나는 그것을 실행할 때마다에서 HUD.h

#import <QWidget> 
#import <QMacCocoaViewContainer> 


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

에서

그러나 나는 오류 말 [있는 NSPanel 창]을 얻을 : 인식 할 수없는 선택기 예를 0x21231f0로 전송. Qt와 코코아를 섞은 사람이 있습니까? 당신이 그것을 작동 시키는데 사용했던 속임수?

답변

1

이 클래스는 창이 아니라보기를 소유하고있는 것처럼 들립니다. NSPanel은 창이므로보기를 원하는 무언가에 그것을주는 것은 작동하지 않습니다.

보기를 작성하여보기 컨테이너에 주거나 창과 동일한 클래스를 사용하십시오.