Я работал над новой функцией поддержки Mac в Qt. По сути, речь идет о добавлении 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
Почти все NSStatusItem
методы устарели в Йосемити из-за новых особенностей вибрации. Хорошее описание здесь, NSStatusItem изменить изображение на темный оттенок
Дело в том, что [trayItem view]
возвращает допустимый объект, предполагает, что вы или Qt настраиваете пользовательское представление.
После настройки пользовательского представления для элемента состояния установка заголовка не имеет никакого эффекта. (Это было верно еще до того, как эти методы устарели).
Стандартный элемент состояния (без установленного пользовательского представления) может иметь image
а также title
установить и передать его на неявно созданную кнопку. Это было сделано более явным / очевидным в 10.10 в том смысле, что эти свойства элемента состояния устарели, и вы устанавливаете свойства кнопки напрямую.