Как стать автором
Обновить

Комментарии 19

Вы писали под Андроид на Qt? QML или виджеты?
Писал. Однозначно лучше использовать QML, тем более что уже есть Qt.Controls
Пытаюсь сейчас пилить персональный опен-сорс проект на Qt Controls 2, в целом уже как-то юзабельно, но есть нюансы. Интересно, как это сделано в серьёзных коммерческих проектах. У вас весь UI на Qt, или есть и нативные части?
мм… вот прям большого ничего нет, в основном небольшие проекты. Так что как правильно делать UI подсказать не могу. Посмотрите примеры на GitHub по запросу QML, там очень много кода.
Проблема не в том, чтобы сделать, а в том, чтобы это ещё и прилично выглядело, и не слишком сложно. Например, настройки приложения: в Андроид есть стандартная PreferenceActivity, но к QML её прикрутить сложновато. Значит, прийдётся писать свой велосипед, и непонятно, что из этого получится.
Но я отвлёкся от темы статьи :)
В этом ключа конечно, если планируется переносимость — нужно городить свой велосипед, чтобы настройки были под всеми ОС одинаковыми. А если приложение предполагается только под Android, возможно лучше и писать его нативно на Java?

В любом случае существует Qt androidextras, позволяющий взаимодействовать с нативным кодом, наверняка там можно вызвать новую Activity, поверх своего приложения.
Спасибо, забыл про androidextras, посмотрю.
Вызвать тоже не проблема, проблема протянуть данные сначала из Java в С++, а потом в QML. Ну и обратно заслать, чтоб UI заполнить, но в ту сторону проще должно быть.
Как раз сделать на QML одинаково под все платформы несложно, но хочется нативный внешний вид. Как минимум, под каждую систему некоторые UI-классы различаются, пусть и все написаны на QML. Целый огород нужно городить, одним словом. По крайней мере, так у меня выходит пока что.
чтобы это ещё и прилично выглядело

Это зависит от художественных способностей разработчика или наличие UI/UX дизайнера.

Лайфхак, хорошие веб-верстальщики после освоения QML по идее могут делать крутые штуки)
У меня нет знания плохо документированных тонкостей QML, чтобы точно мимикрировать под Android Material design в нетривиальных случаях.
Автору грандиозный респект за его осмысление и труд, замечательную статью и открытый код.
К сожалению, пока только в комментариях.
О личном опыте — была задача на архитектуру с rest-api в QtQuick: до отдельной библиотеки дело не дошло, но получилось весьма похоже.
Добавлю, что для того, что бы уйти от лишних QObject-ов, активно задействовался Q_GADGET, например при клике на элемент DetailModel формировался такой объект, что позволило ослабить хватку слежения за выделяемой памятью (понятие ownership оказалось не без подвохов).
Спасибо) Про Q_GADGET не знал, нужно будет действительно с ним покопаться да найти применение.
Интересный проект, спасибо, что выложили и подробно поделились использованием.

Выглядит все очень цельное и логично, надо будет обязательно попробовать.
Спасиб! Буду рад рекомендациям и сообщениям об ошибках)
C:\qtrest-example>qpm install
INFO: Package com.github.kafeg.qtrest has a different license (MIT) than it's de
pendant (NONE).
Installing com.github.kafeg.qtrest@0.1.0
QPM: 2016/11/12 13:58:22 ERROR: GetFileAttributesEx C:\qtrest-example\vendor\kafeg-qtrest-2dddaa5\src\models\qpm.json: The system cann
ot find the file specified.
Привет. Это баг в QPM под виндой кажется, я им баг реквест засылал, подвердили и обещали исправить. Попробуйте через подключение библиотеки путем копирования.
Уже попробовал — проект устарел — Qt.labs.controls включены в 5.7 со всеми стилями, а QPM_INIT(engine); — такой команды вообще нет… не понимаю, зачем этот qpm… это же никакого отношения к компании — разработчику qt не имеет…
По итогу проект не собирается от слова совсем.
Действительно, делал example еще на Qt 5.5.1. Поправил сборку под Qt 5.7, соотв. для example проекта 5.7 является минимальной версией. Попробуйте собрать.

Ну и QPM все таки выкинул, вообще штука хорошая (типа CocoaPods), но работает плохо. =(
Работает, спасибо, даже как то неожиданно :)

qpm видел только в 1 проекте — papyros в qt material, причем буквально перед тем как в 5.7 добавили тот самый material. В результате papyros загнулась…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации