Как стать автором
Обновить

Комментарии 25

Офигенная статья. А что касается дока, то все думаю доделать кроссплатформенный класс для работы с ним ибо сейчас док есть и в Макоси и в Убунте и в выходящих кедах и даже в винде по сути дела новый таскбар являет собой док.
Упс, промахнулся мимо Вашего комментария. См. ниже.
Спасибо за высокую оценку!
С доком дела обстоят достаточно сложно, в разных системах он имеет разную функциональность, собственно, по этой причине в Qt нет встроенных функций для работы с ним.
Кроме того, в винде версии ниже 7 таскбар несравним с доком. И Unity есть пока только в убунту.
Так что, как ни крути, придётся делать разные классы для каждой системы. Унифицировать тут вряд ли можно.
Все доки имеют менюшку, во всех доках в принципе можно встраивать бейджы, везде можно иконку дока менять, обрабатывать нажатие на неё, делать подпрыгивание или другую сигнализацию и во всех доках можно делать индикатор прогресса. Где-то нативными методами где-то тупо рисуя его.
То бишь общий интерфейс как ни странно есть.
Ну, разве что действительно вручную рисовать.
В таскбаре вин7 есть, к примеру, фича, которой я больше нигде не видел — это выдача попапа с заданными виджетами внутри при наведении на значок мышки.
Кроме того, остаются ещё системы без поддержки «доковости» в принципе.
Есть системы и без трея вовсе. Но QSystemTray таки существует.
Насёт Unity — не совсем точно. Для KDE SC 4, например, есть icon-tasks, который реализует Unity API — такой себе Unity без оного. И может быть где угодно. Скорее проблема в том, что нет гарантии, что у пользователя это есть. Особенно в мире Linux. Но тут можно пойти простым путём — нет, ну и ладно.
Там dbus интерфейсы, спросили у него есть апи круто, нету, ну и ваши проблемы.
Ну да, я о том, же, что если нет функционоала дока, то и ладно. И так можно было бы в любой ОС сделать. Под XP/Vista — не будет работать, под 7- будет.
Несмотря на то, что сам являюсь сторонником переносимого кода, всё-так считаю что Qt как ни прикручивай к MacOS X, всё равно:
1) интерфейс смотрится чужеродно, некрасиво
2) в аппстор таким программам путь заказан
3) маководы в большинстве своем перфекционисты и педанты, поэтому из-за п.1 такой софт не будет у них в фаворе. Это значит следующее: допустим есть офигенная прога, которая суперски делает свое дело, но использует Qt GUI. Если нет ничего нативного, маководы скачают ее и будут пользоваться. Как только выйдет кривая поделка, полная багов, но с красивым нативным «лицом», — маководы выбросят QT-хорошую-прогу и поставят нативный костыль. У меня была возможность наблюдать это не раз.

На основании вышесказанного, если конечная цель проекта — успешное приложение для MacOS X, — лучше разобраться с Objective-C и Cocoa, а Qt оставить в покое.

В начале поста я оговорился, что рассчитываю в основном на тех, кому надо достаточно быстро свою программу впилить в макось. Так что конечная цель — более-менее успешное портирование. Далее по пунктам.

1. Интерфейс очень сильно приближен к родному, но его всё равно можно кастомизировать, используя Style Sheets. Единственное, чего не хватает — это родного скролла с резиновыми краями (и исчезающего скроллбара).
2. Не согласен, на хабре даже проскакивали ссылки на такие программы, да и я такие видел не раз.
3. Я и сам в некотором роде маковод. Но у меня стоят программы, написанные на Java и GTK+, которые смотрятся достаточно не-нативно. И ничего. И многие их ставят.

Вообще, если создатели Qt допилят нативный скроллинг, то пользователь может даже не узнать о том, что твоя программа написана не на Cocoa. Но с одним я согласен: если хочешь делать изначально под мак и только под него, то делай это на Cocoa (иногда с добавлением Carbon'а).
1. ни разу еще не видел хотя бы приблизительно похожего.
2. можно ссылочку хоть на одну? любопытно.
3. я написал «в большинстве своем», не имел в виду вас. я, к примеру, не ахти какой педант, но стараюсь не ставить на мой мак чужеродного софта.

В целом я с вами согласен — для портинга нормально. Но если это не портинг, а лень учиться чему-то новому, то Qt не прокатит.
Уже не надо, сам нашел: itunes.apple.com/us/app/togmeg/id445287955

image

И все равно выглядит чужеродно. Мне кажется объём работы по мимикрированию GUI в этом случае сопоставим с объёмом работы по переносу GUI на Сocoa, это конечно при условии что логику программы оставить написанной на C++.
Лично мне не лень учиться новому. Обычно начальству «лень» ждать конца обучения, да ещё и оплачивать его. =)

По пункту 2 — есть ещё скробблер Last.FM, в аппсторе его правда нет, но популярностью пользуется.
Если начальство адекватное, можете попробовать объяснить ему, что

1. Конечный результат будет заведомо чуть хуже
2. Время, потраченное на шаманство со стилями и прочие танцы с бубном, примерно равно портингу GUI на Cocoa. А для действительно хорошего программиста оно будет еще меньше.
1. Это да
2. Для сложного проекта (где GUI достаточно много, причём кастомного) это не так.
Для кастомного гуя вообще лучше юзать Qt Quick. Впрочем, на QtQuick вполне можно будет юзать и кокоа виджеты.
QtQuick можно юзать разве что для новых проектов, если есть уже большая софтина с кучей наворотов, то придётся весь GUI переписывать с нуля.
Ну, и куча ограничений всё же стоит на этот Quick.
Ну а если же конечная цель — работа на многих платформах, включая MacOS X (иногда портинги делают «для галочки», чтоб было), тогда конечно, Qt — самое оно.
Ну, я как раз и хочу, чтобы портинг был не «для галочки», а достаточно серьёзным с минимальными затратами. Можно, конечно, как скайп — для каждой системы родной GUI, но это дольше и дороже.
Я вот на маке использую PhpStorm, хотя он даже не на Qt, а на (обожемой) Java. Ибо в остальном это очень удобная IDE, несмотря на её «некрасивость». Так что, ИМХО, не совсем родную программу на Qt для Mac OS X люди легко потерпят, если сама программа при этом будет действительно хороша и не будет нативных аналогов.

А в целом я с вами согласен
Спасибо за статью. Было интересно почитать. Даже не смотря на то, что в основном сижу под седьмым виндовозом.
Мне, как iOS/Mac разработчику с большим стажем программировани на Qt за спиной, статья ничего нового не принесла. Но в общем очень полезная, особенно учитывая, что Mac набирает популярности в мире.
А ну еще, Qt не очень спешать внедрять новые фишки по совместимости, чего только стоит надпись ворнинг, о том что Qt не своместим с 10.7
В Qt 4.8 Такого ворнинга нету
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории