Size: a a a

2021 January 05

ИФ

Имя Фамилия... in Qt
Проект довольно большой и в дизайне будет много страниц, контролов с кастомными стилями и ещё много чего. Я уже начинаю путаться в своих же файлах, поэтому решил все переделать пока не поздно
источник

RG

Renat Garaev in Qt
Имя Фамилия
Где можно почитать про архитектуру qml проекта? Смотрел много "обучающих" видео, читал форумы и статьи, но так ничего и не узнал, каждый делает по своему и даже не объясняет что да как, просто тупо пишет код и типа "так надо". Я знаком с паттернами проектирования и примерно знаю как их применять в QT, но в QML они не очень помогают. Читал про Qt Modules, вроде понял как они работают, но как с их помощью правильно организовать файлы так и не понял.

Ещё хотелось бы побольше узнать про контролы и их стилизацию, но наверное информации в доках мне достаточно.
А вот про design studio в инете почти ничего нет... пришлось самому копаться и вот что я узнал:
- в файлах .ui.qml должен быть только дизайн и вообще никакой логики
- взаимодействие с контролами в этих файлах делается через property alias
- эти файлы можно редактировать только через design studio, текстовый редактор по загадочной причине использовать нельзя.
Уроков по работе в design studio, конечно, нет, но думаю сам разберусь. Главное не пожалею ли я в будущем если буду использовать этот редактор и строить архитектуру используя .ui.qml файлы?
Про стилизацию контролов в qmlbook есть примеры, наверное их смотрели?
источник

ИФ

Имя Фамилия... in Qt
Renat Garaev
Про стилизацию контролов в qmlbook есть примеры, наверное их смотрели?
Нет, читал в оф. доках.

qmlbook быстренько пролистал, но особо не стал вникать, вроде пишут практички то же самое
источник

МВ

Макс Воробьев... in Qt
Исходный код LTS-ветки Qt 5.15 ограничен для обычных пользователей https://opennet.ru/54352/
источник

МС

Михаил Серебренников... in Qt
Имя Фамилия
Где можно почитать про архитектуру qml проекта? Смотрел много "обучающих" видео, читал форумы и статьи, но так ничего и не узнал, каждый делает по своему и даже не объясняет что да как, просто тупо пишет код и типа "так надо". Я знаком с паттернами проектирования и примерно знаю как их применять в QT, но в QML они не очень помогают. Читал про Qt Modules, вроде понял как они работают, но как с их помощью правильно организовать файлы так и не понял.

Ещё хотелось бы побольше узнать про контролы и их стилизацию, но наверное информации в доках мне достаточно.
А вот про design studio в инете почти ничего нет... пришлось самому копаться и вот что я узнал:
- в файлах .ui.qml должен быть только дизайн и вообще никакой логики
- взаимодействие с контролами в этих файлах делается через property alias
- эти файлы можно редактировать только через design studio, текстовый редактор по загадочной причине использовать нельзя.
Уроков по работе в design studio, конечно, нет, но думаю сам разберусь. Главное не пожалею ли я в будущем если буду использовать этот редактор и строить архитектуру используя .ui.qml файлы?
Напомни мне часа через четыре. Я расскажу как о своём опыте организации разработки на QML.
источник

m

mefest in Qt
Имя Фамилия
Где можно почитать про архитектуру qml проекта? Смотрел много "обучающих" видео, читал форумы и статьи, но так ничего и не узнал, каждый делает по своему и даже не объясняет что да как, просто тупо пишет код и типа "так надо". Я знаком с паттернами проектирования и примерно знаю как их применять в QT, но в QML они не очень помогают. Читал про Qt Modules, вроде понял как они работают, но как с их помощью правильно организовать файлы так и не понял.

Ещё хотелось бы побольше узнать про контролы и их стилизацию, но наверное информации в доках мне достаточно.
А вот про design studio в инете почти ничего нет... пришлось самому копаться и вот что я узнал:
- в файлах .ui.qml должен быть только дизайн и вообще никакой логики
- взаимодействие с контролами в этих файлах делается через property alias
- эти файлы можно редактировать только через design studio, текстовый редактор по загадочной причине использовать нельзя.
Уроков по работе в design studio, конечно, нет, но думаю сам разберусь. Главное не пожалею ли я в будущем если буду использовать этот редактор и строить архитектуру используя .ui.qml файлы?
ui.qml вроде можно редактировать как текст. не было проблем с этим
источник

МВ

Макс Воробьев... in Qt
есть ли смысл вообще пользовать ui.qml ?
источник

RE

Radu Ene in Qt
когда проект разрастается есть шансы забыть о некоторых компонентах которые уже имеются в ui базе в результате чего не оправдано будет увеличиваться
источник

m

mefest in Qt
Макс Воробьев
есть ли смысл вообще пользовать ui.qml ?
я использую чтоб видеть сразу что получается.
конечно дизайнер весьма ограничен но иногда бывает норм
источник

МВ

Макс Воробьев... in Qt
mefest
я использую чтоб видеть сразу что получается.
конечно дизайнер весьма ограничен но иногда бывает норм
так дизайнер и для .qml работает
источник

МВ

Макс Воробьев... in Qt
мне просто не нравится qml реализация view-controller
источник

МВ

Макс Воробьев... in Qt
когда controller наследуется/расширяет view
источник

RE

Radu Ene in Qt
Михаил Серебренников
Напомни мне часа через четыре. Я расскажу как о своём опыте организации разработки на QML.
на самом деле вопрос интересный и одна из лучших практик будет только в плюс всем, поэтому очень даже интересно узнать о вашем опыте
источник

ИФ

Имя Фамилия... in Qt
Михаил Серебренников
Напомни мне часа через четыре. Я расскажу как о своём опыте организации разработки на QML.
Напоминаю 🙃
источник

МС

Михаил Серебренников... in Qt
Имя Фамилия
Напоминаю 🙃
Ещё не дома.))
Вернусь напишу)) Сегодня точно.
источник

ИФ

Имя Фамилия... in Qt
mefest
ui.qml вроде можно редактировать как текст. не было проблем с этим
Qt Creator автоматически открывает эти файлы во встроенном дизайнере, а Plain Text криво поддерживает подсветку синтаксиса
источник

ИФ

Имя Фамилия... in Qt
Михаил Серебренников
Ещё не дома.))
Вернусь напишу)) Сегодня точно.
👌
источник

МС

Михаил Серебренников... in Qt
Имя Фамилия
Где можно почитать про архитектуру qml проекта? Смотрел много "обучающих" видео, читал форумы и статьи, но так ничего и не узнал, каждый делает по своему и даже не объясняет что да как, просто тупо пишет код и типа "так надо". Я знаком с паттернами проектирования и примерно знаю как их применять в QT, но в QML они не очень помогают. Читал про Qt Modules, вроде понял как они работают, но как с их помощью правильно организовать файлы так и не понял.

Ещё хотелось бы побольше узнать про контролы и их стилизацию, но наверное информации в доках мне достаточно.
А вот про design studio в инете почти ничего нет... пришлось самому копаться и вот что я узнал:
- в файлах .ui.qml должен быть только дизайн и вообще никакой логики
- взаимодействие с контролами в этих файлах делается через property alias
- эти файлы можно редактировать только через design studio, текстовый редактор по загадочной причине использовать нельзя.
Уроков по работе в design studio, конечно, нет, но думаю сам разберусь. Главное не пожалею ли я в будущем если буду использовать этот редактор и строить архитектуру используя .ui.qml файлы?
У QML достаточно простой и нестрогий синтаксис, и это развращает и приводит к говнокоду. Поэтому важно соблюдать соглашение о стиле кода. Я придерживаюсь следующим правилам.

Очерёдность при описании элемента
1. id (если нужен);
2. объявление новых property и signal;
3. установка значений существующих property:
   3.1 text, source, sourceComponent (как самые главные свойства);
   3.2 все остальные свойства;
   3.3 x,y,width,height,anchors;
   3.4 Behavior
4. QML-элементы (наследники Item и QtObjects);
5. states и transitions;
5. слоты и обработка сигналов (onClicked, Connections), но кроме Component.onCompleted и Component.onDestruction;
6. функции;
7. Component.onCompleted и Component.onDestruction.

Обработка создания и разрушения элемента (пункт 7) перенесена в конец, т.к. это очень важный и часто используемый кусок кода. Вставляю пробельные строки между элементами, id, блоком свойств и т.д.
Если блочные свойства (anchors, fonts и др.) содержат больше двух строк, то описываю через фигурные скобки. Оформление тернарного оператора - дело вкуса, но я стараюсь разбивать на три строки.

Файловая структура
Fonts/
   SomeFont.ttf
   Fonts.qrc
Images/
   SomeImage.svg
   Images.qrc
QML/
   Components/
       SomeComponent.qml
       qmldir
   JavaScript/
       SomeJsTool.js
   Pages/
       Page1/
           ComponentForPage1.qml
           qmldir
       Page1.qml
       Page2.qml
       qmldir
   Main.qml
   Consts.qml
   Colors.qml
   qmldir
   Qml.qrc
Translations/
   Project_ru_RU.ts
   Project_ru_RU.qm
   Translations.qrc

По требованию Qt qml-файлы должны начинаться с заглавной буквы. Поэтому для единообразия я остальные файлы и каталоги (кроме qmldir) также задаю в CamelCase. Но это дело вкуса. Также важно, чтобы название файла и id в его описании совпадал.

Модули и import
Свои QML-файлы можно оформлять в виде модулей через qmldir. Также можно просто в import писать относительный путь (import "../../Components") до нужно каталога или абсолютный путь (import "qrc:/Components"). Моя практика показала, что если не писать библиотеку для сторонних людей, то лучше не использовать qml-модули. Т.к. и без них всё работает без конфликтов, и при этом не тратиться куча времени на дублировании имени файла в qmldir.

С++ и QML
Тут всё просто. В C++ должно быть вынесено максимум бизнес-логики. А её выполнение не должно блокировать GUI-поток.
источник

МС

Михаил Серебренников... in Qt
Пример структуры можно посмотреть в моём полуброшенном проекте https://github.com/SiberianProgrammers/ChaosHub.
источник

RE

Radu Ene in Qt
Михаил Серебренников
Пример структуры можно посмотреть в моём полуброшенном проекте https://github.com/SiberianProgrammers/ChaosHub.
источник