如何从 C++ 接收 NSTextField textDidEndEditing 的通知?

发布于 2024-11-07 06:35:34 字数 188 浏览 0 评论 0原文

我有一个使用 NSSearchField 的 Objective-C++ 程序。具体来说,NSSearchField 包装在 QMacCocoaViewContainer 派生类 (Qt) 中。如何设置才能从 Qt 信号接收 textDidEndEditing 通知?我需要一个使用 NSNotificationCenter 的纯 Objective-C 类吗?

I have an Objective-C++ program that uses an NSSearchField. Specifically, the NSSearchField is wrapped in a QMacCocoaViewContainer derivative (Qt). How can I set things up so that I can receive notification of textDidEndEditing from a Qt signal? Will I need a pure Objective-C class that uses NSNotificationCenter?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水溶 2024-11-14 06:35:34

如果您使用的是 iOS4,看起来您可以将通知发送到块。 NSNotificationCenter 采用这种方法:

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block NS_AVAILABLE(10_6, 4_0);

然后你可以这样做:

MyClass.m:

static void (^receiveNote)(NSNotification *) = ^(NSNotification * note)
{
    UITextField * field = [ note object ] ;
    // forward notification to C++ here
} ;

...

@implementation MyClass

...

-(void)setUpNotifications
{
    [ [ NSNotificationCenter defaultCenter ] addObserverForName:UITextFieldTextDidChangeNotification 
                                                         object:self.textField 
                                                          queue:[ NSOperationQueue mainQueue ] 
                                                     usingBlock:receiveNote ] ;
}

If you're on iOS4, looks like you can have your notification delivered to a block instead. NSNotificationCenter sports this method:

- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block NS_AVAILABLE(10_6, 4_0);

Then you could do something like:

MyClass.m:

static void (^receiveNote)(NSNotification *) = ^(NSNotification * note)
{
    UITextField * field = [ note object ] ;
    // forward notification to C++ here
} ;

...

@implementation MyClass

...

-(void)setUpNotifications
{
    [ [ NSNotificationCenter defaultCenter ] addObserverForName:UITextFieldTextDidChangeNotification 
                                                         object:self.textField 
                                                          queue:[ NSOperationQueue mainQueue ] 
                                                     usingBlock:receiveNote ] ;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文