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

Qt Designer С++ или QML для GUI

Я знаю, что использование QML является совершенно новым в QT, и мне было интересно, должен ли я разрабатывать свое приложение с помощью QTDesigner или QML. Я буду использовать шаблон MVC, и моя главная проблема, если я использую QML для графического интерфейса, заключается в том, что было бы непросто интегрировать внутри остального моего приложения на С++.

Не стесняйтесь давать свои личные советы, я был бы очень признателен. Спасибо!

4b9b3361

Ответ 1

QML предназначен в первую очередь для мобильных платформ. Из-за своей молодости и ее заботы о разнообразных интерфейсах интерфейса платформы, у нее нет стандартных элементов управления, таких как кнопки и комбинированные поля (но см. Проект Components). Если вы находитесь на мобильном телефоне или ваш пользовательский интерфейс требует особого визуального стиля, QML, возможно, стоит рассмотреть. Будьте готовы к большой дополнительной работе по разработке пользовательских элементов управления. По моему мнению, интеграция QML и С++ по-прежнему довольно сложна. Я лично рекомендовал бы использовать QML только для более простых приложений, только на мобильных платформах и только с JavaScript. При правильных обстоятельствах я мог бы рассмотреть возможность создания пользовательских элементов QML в С++.

API Qt С++ не уходит в ближайшее время. Он также разработан с учетом настольных компьютеров и будет лучше удовлетворять ожидания пользователей на настольных платформах. Если вы на рабочем столе, я бы рекомендовал придерживаться С++ и Designer. Даже после того, как QML созревает немного, это, вероятно, не будет правильным решением для большинства настольных приложений.

Обновление!

Похоже, что вещи начинают меняться. Я еще не пробовал новые компоненты, и документация кажется немного разреженной (или, по крайней мере, в стороне), но это может в конечном итоге устранить самый большой барьер для использования QML на рабочем столе. Пока неясно, получит ли это поддержку в долгосрочной перспективе, но если вы согласитесь рискнуть стать ранним усыновителем, я думаю, что QML теперь может быть жизнеспособным выбором для настольных приложений.

Ответ 2

Было бы полезно попробовать немного QML, чтобы проверить, подходит ли оно вашим потребностям.

Если вы создаете настраиваемый пользовательский интерфейс с динамическими интерфейсами и анимациями, QML подходит для работы; если вы создаете традиционное настольное приложение, то вы, вероятно, захотите придерживаться Qt С++ API.

Что касается интеграции между QML и С++, QML предназначен для простой интеграции с кодом С++, и во многих приложениях QML используется какой-либо С++-сервер. Прямо вводить объекты С++ в QML-интерфейс или писать пользовательские элементы QML в С++. Посмотрите http://doc.qt.io/archives/qt-4.7/qtbinding.html и http://doc.qt.io/archives/qt-4.7/qml-extending-tutorial-index.html.

Ответ 3

Одна вещь, пропущенная вышеупомянутыми ответами, заключается в том, что QML имеет дополнительное преимущество/недостаток JavaScript для бизнес-логики (при необходимости). В настоящее время я создаю приложение (для малого и среднего) для рабочего стола, и сейчас мне нравится (2) альфа-пользователи. Я впечатлен выразительностью структуры и тем, как быстро я смогу ее обновить и протестировать. В целом я нахожу, что быстрее работать, чем редактор RAD (дизайнер), и мне нравится иметь JavaScript в качестве резервной копии моего пользовательского интерфейса, когда я делаю раздражающие вещи, такие как зависания/валидация и т.д.

Я думаю, что это вопрос того, насколько вам комфортно с языком. Если С++ - это ваш язык "идти", чем вы, вероятно, пользуетесь дизайнером. Если вы приходите из Интернета (исповедь, я разработчик Java EE/MVC.NET, занимающийся большим количеством интерфейсов), вы найдете его освежающим и быстрым.

Он также позволяет проявлять некоторую отзывчивость, которую пользователи ожидают в эти дни. В целом я бы дал ему огромный плюс. Попробуйте - вы, вероятно, скорее всего будете довольны и скорее раздражены в тот же период времени. Я все еще сержусь на пару вещей (в частности, FileIO), но я наслаждаюсь стороной GUI вещей, которые я редко делаю на рабочем столе.