在Yosemite上忽略NSStatusItem setTitle

时间:2015-01-27 18:31:17

标签: 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: nstitle];
}

注意:在上面的代码中,toNSString()创建&发布适当的NSString *。

有趣的是,如果用

替换实际设置线
[[trayItem view] setToolTip: nsstring];
事实上,

工具提示正在改变。它证明trayItemnsstring是正确的对象。

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

2 个答案:

答案 0 :(得分:1)

由于新的活力特征,几乎所有NSStatusItem方法都在Yosemite中被弃用。好的描述,NSStatusItem change image for dark tint

答案 1 :(得分:1)

[trayItem view]返回有效对象的事实表明您或Qt正在设置自定义视图。

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

标准状态项(无设置自定义视图)可以设置其imagetitle,并将其转发到隐式创建的按钮。这在10.10中更明确/更明显,因为这些状态项属性已被弃用,并且您直接设置了按钮的属性。