Подтвердить что ты не робот

"Традиционный Qt" или "Qt Quick" для настольной программы?

Nokia только что представила Qt Quick (создание пользовательского интерфейса декларативно, как использование CSS/HTML) в недавних версиях Qt beta​​strike > , проверьте это пример страницы, он может создать фантастический и современный интерфейс, очень круто!

Напротив, пользовательский интерфейс, разработанный "традиционным Qt", кажется менее привлекательным (я могу ошибаться, см. отказ от ответственности ниже).

Итак, мой вопрос: используете ли вы традиционную Qt или Qt Quick для новой настольной программы? Почему?

Мои первоначальные мысли:

'Традиционный Qt':

Плюсы:

  • Все используемые технологии будут меньше, поэтому проще, если вы используете PySide, вы используете только код на Python, не нужно возиться с CSS/JS-подобными вещами в Qt Quick;

  • Срок его действия.

    Минусы:

  • Создавать фантастический интерфейс, кажется, сложнее?

'Qt Quick':

Плюсы и минусы: наоборот.

Edit: Qt Quick имеет недостаток, исправьте меня, если я ошибаюсь, вы не можете создать Qt Quick UI в режиме WYSIWYG, правильно?

Отказ от ответственности: я новичок в Qt, PySide и Python, недавно начал оценивать использование этих технологий для создания настольных программ.

4b9b3361

Ответ 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 может быть более подходящим.
Вы должны быть осторожны с примечаниями о производительности.