我正在尝试在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?你曾经使它运作的任何技巧?
答案 0 :(得分:1)
听起来这个类应该拥有一个视图,而不是一个窗口。 NSPanel是一个窗口,因此将它提供给想要视图的东西是行不通的。
创建视图并将其提供给视图容器,或使用带窗口的等效类。