2009-12-24 6 views
15

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

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

Возможно, я ограничу свои приложения, пропустив какао?

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

+0

У многих людей очень странный взгляд на то, как выглядит «родное для Mac» приложение, и для нас приложения Qt не сокращают его. «Я использую средства управления аквапарком», не переводит на «Я хороший гражданин на вашем Mac». –

ответ

13

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

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

Несколько негативов я могу думать с верхней частью моей головы:

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

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

+2

Хорошо объяснил, спасибо! Я думаю, что лицензирование QT довольно либерально, так как Nokia приняла это решение. – Scott

+0

В настоящее время QT лицензируется под LGPL 2.1, GPL 3.0 или коммерческой лицензией, поэтому он очень гибкий. LGPL отлично подходит для коммерческих приложений, если вы выполняете несколько простых требований (динамическое связывание упрощает многие вещи). Подробнее см. Http://qt.nokia.com/products/licensing. – gavinb

+4

Кроме того, вы можете получить доступ к родному API в Qt и сделать материал, который «пугает разум». Так что это довольно непроинформированный ответ. – anno

1

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

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

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

3

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

+0

Какао кажется сильным API. Семантика передачи сообщений действительно имеет смысл для UI/callback. – Scott

+0

Если вы хотите изучить Objective-C более подробно, я рекомендую Learn Objective-C на Mac (http://www.apress.com/book/view/1430218150), а для Cocoa классическая книга - Cocoa (R) Программирование для Mac (R) OS X (http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619). –

1

НЕ ПРИНИМАЕТ использовать Qt для Mac. Вы не получите аппаратного ускорения для 2D-рендеринга, и вы не сможете выполнить ADA-совместимость.

+0

Нет аппаратного ускорения? Это довольно большая проблема. – Scott

+0

Еще одна вещь, которую вы должны иметь в виду: если вам требуется техническая поддержка, Apple поддерживает Cocoa. Apple не поддерживает Qt. – NSResponder

+0

Разве вы не получаете обычного ускорения OpenGL для ваших элементов 2D UI? – e8johan

3

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

+1

Реализация Mac OS для моих кросс-платформенных приложений - это дерьмо. Не делай этого. Хорошие приложения для Mac сделаны в магазинах Mac. –

2

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

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

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

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

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

+0

«Вы всегда можете начать с Qt front-end и быстро выйти на рынок, а затем разработать собственный интерфейс вниз по линии». Это очень плохая идея. У вас есть только один шанс произвести первое впечатление. – NSResponder

5

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

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

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

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

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

+5

Я должен отметить, что Qt является * способом * более мощным и полным, чем WxWidgets. Wx очень ограничен графическим дизайном UI, в то время как Qt предлагает целую среду приложений, включая парсеры, сети, аудио и т. Д. Таким образом, Qt гораздо более сопоставим с Cocoa, чем Wx. – bastibe

+1

Прохладный рассказ, но я не думаю, что ваш успех имел много общего с переходом на API Cocoa. Как отметил Бастиб, wxWidgets имеет ограниченную функциональность. Очень вероятно, что Qt выполнил бы такую ​​же или лучшую работу. Что касается отказа от поддержки Linux и Windows, я бы назвал это шагом назад. Mac, к сожалению, очень маленький рынок. Я почти уверен, что ваш успех исходил от создания чистого, отзывчивого, удобного для пользователя интерфейса и добавления новых функций, которые вы можете делать с Qt и C++. – Ignas2526

3

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

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

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

2

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

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

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

3

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

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

Что делать, если я должен использовать приложение 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 Даже вы можете добавить поддержку для нового родного льва полноэкранного режима художественного, унифицированы названиями и панели инструментов меню и т.д.

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

Смежные вопросы