Раскраска заголовка в macOS несколькими цветами - PullRequest
0 голосов
/ 24 января 2019

У меня есть приложение Qt, которое работает на macOS.Я нашел способ изменить цвет заголовка здесь , однако я хочу сделать еще один шаг вперед.Я хочу имитировать заголовок, который используют приложения Slack и Discord.Например:

enter image description here

Как видите, цвет элементов управления в окне простирается до самого верха окна приложения.Я полагаю, что есть два способа выполнить то, что я хочу:

  1. Я могу опираться на код, вставленный выше.Просматривая некоторую документацию для разработчиков Apple, я думаю, что могу создать пару NsWindow поверх заголовка с любой шириной, которую я хочу, и прикрепить заголовок в качестве родительского для этих окон.Как только я это сделаю, я смогу сделать один и тот же цветной звонок backgroundColor() для каждого.Конечно, это потребует от меня отслеживания изменения размера элементов управления или окна и настройки NsWindow s заголовка, и я не уверен, какие (если таковые имеются) проблемы, которые могут вызвать.

  2. Может быть, есть способ установить высоту заголовка на 0?Интересно, это то, что делает приложение Discord, потому что:

enter image description here

, если вы присмотритесь, в окне редактирования появится надпись "Найти или начать беседу "вертикально выровнены с кнопками закрытия, сворачивания и максимизации, как и метка" Активность ".Но если элементы управления распространяются на верхнюю часть окна приложения, то как окрашиваются стандартные кнопки приложения?

Мне было бы любопытно узнать, как Slack и Discord достигают этого, хотя я знаю, что они не используют Qt.

Я понимаю, что решения Qt не существует, поскольку Qt не рисуетЗаголовок.Я знаю, что это будет зависеть от ОС, но поскольку у меня нет никакого реального опыта работы с Objective-C ++ или работой с Cocoa (весь мой опыт программирования на macOS был стандартным C ++ с не-UI или кодом на основе Qt), я 'Буду признателен за любые предложения или рекомендации!

1 Ответ

0 голосов
/ 25 января 2019

Собственно это делается с fullSizeContentView и titlebarAppearsTransparent свойствами NSWindow. Установив для них значение true, вы можете рисовать или размещать элементы управления под строкой заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...