Qt4.5 против какао для родного интерфейса Mac - PullRequest
15 голосов
/ 24 декабря 2009

Я давно занимаюсь разработкой для платформ Windows и * nix и собираюсь перейти к разработке для Mac. Я бросаюсь между использованием ObjC / Cocoa и C ++ / Qt4.5.

Семантика C ++ / moc имеет для меня больше смысла, и улучшение знаний в Qt кажется разумным занятием, учитывая, что вы получаете набор навыков, охватывающий больше платформ.

Могу ли я препятствовать моим приложениям, пропуская Какао?

Образцы приложений Qt выглядят для меня довольно родными для Mac, но они довольно просты, поэтому потенциально не могут рассказать всю историю. Существуют ли другие плюсы в способе Xcode, которых нет у Qt, такие как упаковка, развертывание и т. Д .?

Ответы [ 10 ]

13 голосов
/ 24 декабря 2009

Вот простой способ ответить на него:

Если бы вы разрабатывали приложение для Windows с .NET или MFC, не затруднили бы вы ваши приложения с помощью Qt? Если ответ «да», то, скорее всего, на Mac ситуация будет такой же.

Несколько негативов, которые я могу вспомнить из макушки моей головы:

  • Лицензирование
  • Приложения Qt, хотя и хорошие, не являются полностью нативным интерфейсом, и есть кое-что, что может сделать нативный дизайнер UI в Какао, что поражает воображение. Хотя я не могу быть уверен, что в Qt нет такой же функциональности, я сомневаюсь в этом.
  • Qt всегда немного отстает. Если Microsoft или Apple выпустят отличную новую технологию, вам придется подождать, пока разработчики Qt обновят Qt.

Однако, учитывая все вышесказанное, только вы можете определить коммерческую ценность использования Qt. Если вы думаете, что кроссплатформенная разработка будет важной частью вашей разработки, то Qt, возможно, того стоит, несмотря на упомянутые проблемы.

5 голосов
/ 26 декабря 2009

Спросите себя: сколько из лучших приложений для Mac, которые вы знаете, используют Qt вместо нативного Cocoa?

Для наших роботизированных систем мы изначально написали наше управляющее программное обеспечение на C ++, используя кроссплатформенную библиотеку wxWidgets (мы избегали Qt из-за некоторых проблем с лицензированием), потому что мы чувствовали, что нам нужно ориентироваться на платформы Windows, Linux и Mac наши конечные пользователи. Это то, что мы отправляли больше года, пока я не начал возиться с Какао.

Сразу же меня поразило то, как быстро вы можете развиваться, используя Какао. В конце концов мы решили отказаться от поддержки Linux и Windows и переписать все наши управляющие приложения в Какао. То, что заняло у нас годы, чтобы собрать в C ++, потребовало всего три месяца, чтобы полностью переопределить Какао.

Помимо проблем с интерфейсом "наименьшего общего знаменателя", на которые указывали другие, быстрое развитие, предоставляемое Cocoa, стало конкурентным преимуществом для нашей компании. Наше программное обеспечение развивалось намного быстрее после нашего преобразования в Какао, и это позволило нам как новой компании с одним разработчиком справиться с 10-летними конкурентами, у которых есть команды разработчиков из 20 человек. Похоже, что это обычная история в области разработки для Mac, где вы видите множество небольших команд, способных создавать продукты, которые конкурируют с продуктами гораздо более крупных компаний.

В заключение отметим, что использование Cocoa дает вам возможность оставаться в курсе новых API, которые Apple постоянно разворачивает. Сейчас мы работаем над новым интерфейсом управления, который будет интенсивно использовать Core Animation, с которым было бы больно иметь дело с Qt.

3 голосов
/ 08 декабря 2011

Очевидно, что лучшим вариантом является использование кроссплатформенного пакета, который поддерживает нативные виджеты. С QT4 вы можете создать свой базовый пользовательский интерфейс. Затем просто добавьте встроенную поддержку для вашей конкретной целевой платформы.

Конечно, у Какао есть много причудливых вещей (и вы все еще можете использовать их через QT4), но позвольте мне прояснить. Я вижу много красивых приложений в AppStore, красивые, но большинство из них просто дерьмо, дорого… что угодно. Я действительно скучал по своему текстовому редактору Kate, моему обычному зрителю, моему программному обеспечению для рисования на krita ... они просто лучше коммерческих и дорогих альтернатив и бесплатны. так что я просто немного подправил исходный код, чтобы получить РЕАЛЬНЫЙ нативный и отличный опыт.

Что если мне нужно использовать приложение linux на моем главном компьютере с Mac OS X? или окна? или как? только

Например, с какой стати я должен купить дорогое, модное, но гораздо менее функциональное программное обеспечение для редактирования изображений для моего mac-pixelmator, когда я могу использовать полнофункциональное программное обеспечение для работы с реальными изображениями, такое как Gimp? ДА Gimp основан на gtk2, что является проблемой на любой платформе, особенно на Mac, потому что это действительно уродливо. Gimp должен быть портирован на QT4. Inkscape должен быть портирован и на QT4, и это будет здорово.

Это так просто сделать ... черт возьми! http://doc.qt.nokia.com/4.7-snapshot/demos-macmainwindow.html Даже вы можете добавить поддержку новой полноэкранной функции «родной лев», унифицированных меню заголовков и панелей инструментов и т. Д.

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

3 голосов
/ 03 января 2010

Вы можете взглянуть на класс QMacCocoaViewContainer. Он действует как своего рода оболочка для общих представлений Какао, поэтому вы также можете иметь элементы Какао, которые официально не поддерживаются Qt.

Конечно, это означает немного узнать о Какао и Objective C и о том, как должен выглядеть пользовательский интерфейс Какао. Но если вы уже хорошо знаете Qt, и если это не так, как будто ваше приложение полностью посвящено графическому интерфейсу, это может быть хорошим вариантом.

И не забывайте о QMacStyle::WidgetSizePolicy, иначе вы не поймете, почему ваши столы такие огромные.

3 голосов
/ 25 декабря 2009

Я бы использовал Qt, если вы хотите, чтобы это было кроссплатформенное приложение.

3 голосов
/ 24 декабря 2009

В настоящее время я работаю как с QT (на самом деле PyQT, но это не имеет значения для вашего вопроса), так и с собственным приложением Cocoa. Для меня это ежу понятно, я бы выбрал Какао. В общем, стоит изучить Какао, в рамках Какао есть много замечательных концепций, а также Objective-C 2.0.

2 голосов
/ 04 января 2010

С момента публикации я изучал способ Какао / Objective-C и был весьма впечатлен. Несмотря на то, что я изначально думал, что это довольно странный синтаксис, Objc представляется очень эффективным языком для реализации кода пользовательского интерфейса, а сахар XCode - такие как Core Data и привязки - быстро справляется со всеми скучными битами.

Я потратил некоторое время с примерами и документацией по QT, прежде чем копаться в какао, и склонен согласиться с тем, что было сказано выше, с небольшим отставанием от кривой и меньшим «аквасиром» - хотя и из довольно тривиального осмотра. Если бы мне абсолютно необходимо было создать кроссплатформенное приложение, я бы, вероятно, использовал QT, а не пытался бы отделить код пользовательского интерфейса, так как кажется, что он предоставил бы достаточно близкие визуальные эффекты, но для целей только Mac, Cocoa выглядит как определенная победа.

Спасибо всем за ваши ответы, все они были очень полезны!

2 голосов
/ 25 декабря 2009

Я много занимаюсь кроссплатформенной разработкой (Mac, Windows, Linux), и для некоторых проектов использую Qt. Это хорошая структура и предоставляет богатую библиотеку классов. Если вам нужно развернуть на нескольких платформах, вы не можете позволить себе тратить время / усилия на внешние интерфейсы для конкретной платформы или «общая» поддержка для каждой платформы достаточно хорошая, тогда используйте Qt.

Однако, Qt неизбежно страдает в некотором роде от синдрома наименьшего общего знаменателя, и иногда не чувствует себя вполне достаточно родным. Есть также определенные функции, которые либо сложно поддерживать, либо просто не представлены в библиотеках Qt. Поэтому, если вы можете позволить себе потратить время и силы или ваше приложение действительно требует внимания к деталям, а также подгонки и отделки, тогда разработка отдельных интерфейсов может стоить этого.

В любом случае вы должны писать свой внутренний код (он же домен) в нейтральной платформе и нейтральной среде. Таким образом, интерфейс легко заменяется или изменяется между платформами.

Вы всегда можете начать с внешнего интерфейса Qt и быстро выйти на рынок, а затем разработать собственный внешний интерфейс.

На практике я заметил, что приложение Qt в Windows выглядит наиболее «родным», в то время как на Mac есть некоторые тонкие контрольные признаки, которые заставляют его выглядеть / чувствовать себя не совсем правильным. И пользователи Mac, как правило, имеют гораздо более высокие ожидания, когда дело доходит до UI / UX!

1 голос
/ 25 декабря 2009

НЕ используйте Qt для приложения Mac. Вы не получите аппаратного ускорения для 2D-рендеринга и не сможете обеспечить соответствие требованиям ADA.

0 голосов
/ 24 декабря 2009

В зависимости от того, какие приложения вы хотите написать, другой претендент будет REALbasic , теперь называемый Xojo .

Переход с C ++ довольно прост (у меня 15-летний опыт работы с C ++), а фреймворк и IDE чрезвычайно продуктивны. У вас есть дополнительный бонус за возможность развертывания в Linux и Windows с минимальными усилиями. Их структура компилируется в нативный код и использует нативные виджеты, поэтому у вас нет эмулированного внешнего вида.

Основная причина изучения какао и кодирования в Objective-C заключается в том, хотите ли вы оттачивать свои навыки работы с iPhone или гонитесь за действительно фантастическим пользовательским опытом. Если вы хотите конкурировать с передовыми разработками WPF, я бы порекомендовал Cocoa.

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