Objective-C ++ /可可尝试创建带有按钮的窗口,不起作用吗?
|
我应该使用由Objective-C构成并使用可可的c ++方法创建一个c ++类,但是现在我遇到了一个问题,根本无法弄清楚,因为我我在Objective-C上很新。还有一点是,我应该能够从c ++创建窗口和按钮。因此,无论何时我构建并运行该程序,它都会启动,但随后立即变成“无响应”状态。无论如何,这就是我得到的:
窗口
#ifndef WINDOW_H
#define WINDOW_H
class Window {
public:
Window();
void createButton();
};
#endif
窗口mm
#include \"Window.h\"
#include \"Button.h\"
Window::Window(){
NSWindow *window = [[NSWindow alloc]
initWithContentRect: NSMakeRect(100, 100, 200, 200)
styleMask: NSTitledWindowMask | NSMiniaturizableWindowMask
backing: NSBackingStoreBuffered
defer: NO];
[window setTitle: @\"Test window\"];
}
void Window::createButton(){
Button *button;
[[this contentView] addSubView: button];
// word this gives warning: no \'-addSubView:\' method found
// this is probably causing the problem I have
}
按钮
class Button{
Button();
};
// There will be more methods here eventually
纽扣
#include \"Button.h\"
Button::Button(){
NSButton *button = [[NSButton alloc]
initWithFrame: NSMakeRect(14, 100, 120, 40)];
[button setTitle: @\"Hello world\"];
[button setAction: @selector(invisible)];
[button setBezelStyle: NSRoundedBezelStyle];
[button setButtonType: NSMomentaryLightButton];
[button setBezelStyle: NSTexturedSquareBezelStyle];
}
Main.cpp
#include \"Window.h\"
#include \"Button.h\"
int main(int argc, char *argv[]){
Window x;
x.createButton();
}
所以,有谁知道它为什么不起作用,就像我提到的那样,我在Cocoa和Objective-C还是很新的,还在学习:P
是的,我已经尝试修复它。
没有找到相关结果
已邀请:
2 个回复
昧伎
您怀疑,这是造成您的问题的原因。 \“ This \”不是指窗口;它指的是类本身。 (请记住,您的类不是NSWindow的子类) 一种选择是在标头中声明您的NSWindow,以便可以全局使用它。因此,使您的标题:
然后将上述行更改为:
(另请注意将大写字母固定在\'addSubview \'上) 您的按钮构造函数也存在类似的问题。您正在创建一个NSButton,但是再也看不到该按钮了。
课刊灭似