C++ 约塞米蒂岛上的NSStatusItem setTitle被忽略

C++ 约塞米蒂岛上的NSStatusItem setTitle被忽略,c++,objective-c,macos,cocoa,nsstatusitem,C++,Objective C,Macos,Cocoa,Nsstatusitem,我一直在为Qt中的Mac支持开发一个新功能。基本上,它是关于添加NSStatusItem::title支持的。由于Qt是一个C++框架,我在Objc绑定的范围内工作,相应的方法在C++头中声明,并在.mm源文件中定义。 void QCocoaSystemTrayIcon::updateTitle(const QString &title) { NSString *nstitle = title.toNSString(); [trayItem setTitle: nstit

我一直在为Qt中的Mac支持开发一个新功能。基本上,它是关于添加NSStatusItem::title支持的。由于Qt是一个C++框架,我在Objc绑定的范围内工作,相应的方法在C++头中声明,并在.mm源文件中定义。
void QCocoaSystemTrayIcon::updateTitle(const QString &title)
{
    NSString *nstitle = title.toNSString();
    [trayItem setTitle: nstitle];
}
注意:在上面的代码中,toNSString在适当的位置创建并释放一个正确的NSString*

有趣的是,如果将实际设置线替换为

[[trayItem view] setToolTip: nsstring];
实际上,工具提示正在更改。证明了trayItem和nsstring是合适的对象

我正在运行IIRC最新的OS X Yosemite 10.10.1

由于新的活力特性,Yosemite中几乎所有的NSStatusItem方法都被弃用。这里的描述很好,

事实上[trayItem view]返回了一个有效的对象,这表明您或Qt正在设置一个自定义视图

在状态项上设置自定义视图后,设置标题无效。甚至在这些方法被弃用之前,情况也是如此


标准状态项“未设置自定义视图”可以设置其图像和标题,并将其转发到隐式创建的按钮上。这在10.10中变得更为明确/明显,因为那些状态项属性已被弃用,您可以直接设置按钮的属性。

我知道我们可能会将其保留一段时间,以保留旧版。另一方面,它并没有解释为什么这个方法不起作用……当为Yosemite SDK编译时,这些方法实际上什么都不做,因为它们没有被操作系统使用。如果你的目标是优胜美地之前的版本,你应该不会遇到你提到的遗留支持问题。我在查阅一些关于如何使用NSStatusBarButton的文档,但是IIRC甚至没有官方的API参考,这是什么?