Спасибо! Хорошая статья. После НГ изучу код поподробнее.
Одно замечание: не рекомендуется использовать «Qt» в качестве префикса своих классов, этот префикс зарезервирован для классов из Qt Solutions.
Ещё сразу бросилось в глаза: реализация прогресс-бара из Qt Creator'а в макоси выглядит кривовато. Мне кажется, лучше было бы сделать его в виде крутилки — круг постепенно заполняется. И, кроме того, у разных программ разные значки — а значит, у некоторых прогресс-бар будет сливаться со значком, так что лучше сделать его цвет настраиваемым.
Ну, и для Win7 неплохо бы добавить возможность выводить в меню превьюшки произвольных виджетов (вместо превью всех открытых окон).
Возможно, но там рисовать нужно все средствами макоси, а я в них не слишком пока еще силен это во первых. Во вторых из интерфейса нет возможности добраться до конкретного плагина, что в общем-то абсолютно правильно! Поэтому нужен какой-то универсальный способ вызывать платформозависимый функционал.
Да я в курсе насчет префикса, но в принципе мне бы хотелось в конце концов получить для плагина этот самый статус Qt Solutions.
Стремление к универсальности одновременно и огромный плюс, и весомый минус Qt… Мне кажется, лучше было бы предоставить побольше платформозависимых возможностей.
Qt как раз предоставляют простой способ взаимодействия с платформозависимым функционалом. Но я пока хочу базовую часть чуть-чуть отладить на публике, а уже потом добавлять некоторые интересные фичи.
И тут на сцене появляются бравые парни, пишущие в блог Qt Software. :)
Вы правы, но реализовать всё и вся, а потом ещё и поддерживать было бы трудно. Подобные фишки, менюха в таскбаре и прочее — не такая уж и устоявшаяся вещь. Поди знай, что ещё придумают эти ребята из мелкософта или какой другой компании?
Я прекрасно понимаю, что нельзя реализовать всё и вся =)
Но тем не менее, могли бы многие функции сделать публичными для начала. К примеру, сделать публичным класс QBalloonTip. И функции qt_mac_* тоже.
Очень много вещей уже реализовано, но почему-то не входит в public api.
Может сделать платформозависимые фичи как вызов виртуального метода, принимающего в качестве аргумента const char * с idшкой метода и QVariant с данными. Ну например:
QtDockTile — кроссплатформенное использование доков!