"Традиционный Qt" или "Qt Quick" для настольной программы?
Nokia только что представила Qt Quick (создание пользовательского интерфейса декларативно, как использование CSS/HTML) в недавних версиях Qt betastrike > , проверьте это пример страницы, он может создать фантастический и современный интерфейс, очень круто!
Напротив, пользовательский интерфейс, разработанный "традиционным Qt", кажется менее привлекательным (я могу ошибаться, см. отказ от ответственности ниже).
Итак, мой вопрос: используете ли вы традиционную Qt или Qt Quick для новой настольной программы? Почему?
Мои первоначальные мысли:
'Традиционный Qt':
Плюсы:
-
Все используемые технологии будут меньше, поэтому проще, если вы используете PySide, вы используете только код на Python, не нужно возиться с CSS/JS-подобными вещами в Qt Quick;
-
Срок его действия.
Минусы:
-
Создавать фантастический интерфейс, кажется, сложнее?
'Qt Quick':
Плюсы и минусы: наоборот.
Edit
: Qt Quick имеет недостаток, исправьте меня, если я ошибаюсь, вы не можете создать Qt Quick UI в режиме WYSIWYG, правильно?
Отказ от ответственности: я новичок в Qt, PySide и Python, недавно начал оценивать использование этих технологий для создания настольных программ.
Ответы
Ответ 1
ave возился с qml для моего рабочего стола, и я лично нашел это:
- легче создавать анимации, чем в традиционном qt/С++/pyqt (мне нравятся анимации:)
- Я не просмотрел все примеры, но размер кода qml-приложений выглядит меньше, чем эквивалентные приложения в С++
Проблемы, которые я нашел с qml
- имеет плохую поддержку дизайна qml - на данный момент пользовательские элементы не отображаются в qml-дизайнере. Это большая боль, в идеале я должен заставить дизайнера создать мой ui, и я сосредоточусь на коде. Их разработчику qml все еще нужна работа
- Ожидается, что вы изучите javascript со своего "рекомендуемого" способа написания сценариев в qt. Javascript не так просто, как вы можете ожидать, например, обучение python заняло у меня несколько часов, но javascript внешне внешне похож на c, но некоторые из его понятий различны. Также я задаюсь вопросом, могу ли я защитить интеллектуальную собственность в приложении, написанном только javascript и qml. (Исправьте меня, если я ошибаюсь)
- собственные виджеты недоступны в qml, например, он просто предлагает прямоугольники и т.д., которые вы объединяете, чтобы сформировать собственные виджеты.
Это не остановило меня от игры с qml и, поскольку она созревает, я буду принимать вид ожидания и видеть. В настоящее время я использую qml для части моих ui и С++ для бэкэнд.
Ответ 2
Вы сделали одну ошибку: Qt Quick недоступен только в бета-версии Qt. Он был частью официального выпуска Qt с 4,7 (хотя каждая незначительная версия значительно улучшала функции, предлагаемые Qt Quick).
Хотя "нормальный" Qt UI (с QWidgets, макетами и всеми) старше, это не обязательно означает, что Qt Quick незрелый. В конце концов, это часть релиза.
Одна вещь, которую вы не указываете в своих интересах и минусах, - это производительность: "обычный" Qt UI prebuillt (по большей части, в основном), а Qt Quick UI полагаются на интерпретацию QML и CSS/HTML во время выполнения, поскольку вы сказать. Это будет в основном не влиять на скорость приложения на настольной системе, но если вы столкнетесь с узким местом производительности, потому что вы делаете UI слишком фантастическим, не говорите, что я вас не предупреждал. Хотя такое узкое место, вероятно, означает, что вы должны были начать OpenGL с самого начала.
Qt Quick обеспечивает простой способ создания крутого пользовательского интерфейса (что в любом случае продается) и позволит вам использовать более холодные эффекты более простым способом, чем старые.
Ответ 3
Если вы используете Python, вы, вероятно, не заботитесь о производительности. Традиционный Qt позволяет привлекать внешний вид, также через QSS. Что Qt Quick дает, это способ легко создать пользовательский интерфейс (даже без поддержки инструментария, который вводится в 4.8) и использовать скрипты, чтобы заставить его работать.
Вы можете создавать привлекательные интерфейсы с традиционным Qt, в основном, через QSS и получать существующие виджеты. Большинство примеров Qt не фокусируются на этом, но это не значит, что это невозможно. Это также, вероятно, дает лучшую общую производительность, особенно если она закодирована в С++.
Я бы использовал традиционный Qt, потому что я больше знаком с ним. Но это все равно субъективно, поэтому я думаю, что ваш вопрос будет закрыт.
Ответ 4
Я не очень хорошо разбираюсь в традиционных Qt UI-системах. Но я могу дать вам свой опыт в QtQuick:
- Пользовательский интерфейс с использованием QML более прост.
- QML позволяет вам лучше разрабатывать с использованием шаблона MVC. Это делает View отделенным от модели. Вы можете загружать другую версию пользовательского интерфейса во время выполнения.
- QML позволяет разрабатывать расширенный интерфейс.
- Теперь он очень эффективен (с использованием технологии QSceneGraph). Он реализован в нескольких потоках пользовательского интерфейса! Я не уверен, что вы можете сделать более эффективный пользовательский интерфейс, используя С++!
- Дизайнеры пользовательского интерфейса могут разрабатывать пользовательский интерфейс более простой, чем HTML + CSS + Javascript!
- Вы можете создать свой пользовательский элемент интерфейса с помощью С++ с использованием определенных классов.
- QML основан на OpenGL, и в бесплатной версии Qt вы должны это заметить.
- QML имеет специальный отладчик и профилировщик. Отладка в пользовательском интерфейсе настолько проста.
Если вы хотите разработать свое приложение, используя стандартный паттен, например MVC, QML может быть более подходящим.
Вы должны быть осторожны с примечаниями о производительности.