Форум программистов, компьютерный форум, киберфорум
QML
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
161 / 65 / 25
Регистрация: 19.04.2018
Сообщений: 669
1

Qt и разделение логики и QML

22.09.2020, 20:38. Просмотров 1688. Ответов 7
Метки нет (Все метки)

Скажу сразу, тем на форуме валом, этот вопрос уже поднимался десятки раз, но чёткий, структурированный и доступный ответ я так и не нашёл, который ожидал.
И так, есть такой язык программирования с автоматической чисткой мусора — C#, может слышали). В этом языке есть фрэймворк WPF — аналог QT, только уже для C# соответственно. В нём поддерживается такой паттерн как MVVM. В чём суть паттерна? Полное разграничение самой логики и визуализации.

Сейчас перехожу на C++ и QT и хочу сделать простую задачу, но сложную реализацию, чтобы проще было учиться и понимать .

Парсер.
Как это вижу я: HttpRequestToCyberForum.cpp — логика отправки запросов на сайт CyberForum; файл с QML разметкой, RequestUserControl.qml у которого две кнопки — два прямоугольника с скруглёнными слегка углами, при нажатии отправляется Post(верхняя кнопка) и Get(нижняя кнопка) запрос из класса HttpRequestToCyberForum; MainPage.qml — главная страница, которая может содержать кастомные элементы(в данном случае RequestUserControl), в дальнейшем хочется сделать страницу авторизации.

Кто-то может на примере кода, без реализации самих методов, показать как всё это должно быть "по феншую" взаимодействовано в QT?
Да, я думаю кто-то скажет "он просит код программы, которую придумал?", отвечу — я специально придумал задачу-примитив, чтобы не было много кода, но чтобы мне смогли доступно объяснить и продемонстрировать. Вам это минут 10 жизни, мне — шаг с разгоном в QT.
Тем, кому интересно научить того, кто действительно хочет учиться — очень сильно благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2020, 20:38
Ответы с готовыми решениями:

Разделение логики игры
Здравствуйте. Делю логику игры Виселица и есть ошибки, которые я не знаю, как исправить. 1. Я...

Разделение представления от логики
Здравствуйте. Пишу на ASP.NET не так давно, но последнее время кажется мне, что с моим кодом что-то...

Разделение логики и представления
Здравствуйте! Есть сайт, содержаий информацию о компании, ее продукции, формы контакта/заказа,...

Разделение логики и данных
В общем в универе препод говорит при написании прог на шарпе в студии, нужно всегда делать проект...

7
Модератор
Эксперт .NET
5300 / 4095 / 1182
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
22.09.2020, 21:14 2
Цитата Сообщение от limeniye Посмотреть сообщение
показать как всё это должно быть "по феншую" взаимодействовано в QT
limeniye, то есть вам нужно не собственно работа с кодом, а как связать QML код и код на С++/Qt? Так?
0
161 / 65 / 25
Регистрация: 19.04.2018
Сообщений: 669
22.09.2020, 21:19  [ТС] 3
insite2012,
Да-да, я хочу понять как всё это связывается в QT.
Я сейчас набросаю эти классы, для примера, как я это понимаю. А как всё это связать, да ещё и правильно связать — я не понимаю пока что.
Дело в том, что я смотрел гайды всякие. Приведу пример: у автора нет вообще вспомогательных классов, а всё запихивается в бедный мэйн. И как с такими информаторами научиться чему-то нормальному? Так можно научиться выстреливать себе в ногу, разве что.
0
Модератор
Эксперт .NET
5300 / 4095 / 1182
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
22.09.2020, 21:29 4
Цитата Сообщение от limeniye Посмотреть сообщение
я хочу понять как всё это связывается в QT
Ну связывается все это на самом деле проще, вообще-то. Тут дело немного в другом (сразу отмечу, то что я скажу-только мое вИдение данного фреймворка). Как я понял, основная разница построения интерфейса на QML (в отличие от тех же виджетов) в том, что в виджетах мы можем ими манипулировать, какой-то создать и показать, какой-то удалить, то есть манипулируем ими. В QML же все элементы окна (ну или почти все) существуют всегда, но не всегда они видны. Даже ваш пример с запросом-нужно показать прогресс (там для этого есть, например, BusyIndicator). Так вот, в С++ мы его создаем и показываем. Тут же он всегда есть в окне, просто в зависимости от состояния и требований он или видим, или нет. Это я так вижу ситуацию с использованием QML и принципов построения интерфейса с его применением. Это для начала, небольшое вступление так сказать.
0
161 / 65 / 25
Регистрация: 19.04.2018
Сообщений: 669
22.09.2020, 21:47  [ТС] 5
insite2012,
Хм, а разве нельзя прибиндить состояние видимости, через какой-то класс-конвертёр — это во-первых. Во-вторых, у WPF, для этого, элемент может иметь 3 состояния видимости: visible, hidden, callspered. Первые 2 — это то, о чём вы говорите, а последний — это, так сказать, мммм, не существование элемента в программе на этом этапе, то есть его в оперативке не будет.
0
Модератор
Эксперт .NET
5300 / 4095 / 1182
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
22.09.2020, 21:54 6
Цитата Сообщение от limeniye Посмотреть сообщение
разве нельзя прибиндить состояние видимости, через какой-то класс-конвертёр — это во-первых
Там это можно, но немного не таким способом. Допустим есть объект, у него два свойства-working и completed. Эти свойства мы можем связать с другими, и при изменении свойств одного элемента изменяться и свойства привязанного. Такой прием там используется очень широко. Просто вам нужно в это вникнуть, а для этого нужно читать литературу и экспериментировать))
По второму вопросу-такое тоже возможно, насколько я помню (можно динамически создавать элементы, через Loader,если мне память не изменяет). Но это все вам нужно изучать.
В качестве примера могу дать вам исходники одного своего примера, он как раз на QML+C++, делался для мобильной платформы (Андроид), но работает и на ПК. В этом тоже прелесть Qt-а - выбрал комплект под Windows, отлаживаешь. Переключился на комплект под Андроид, скомпилировал под него и там уже все работает))
0
161 / 65 / 25
Регистрация: 19.04.2018
Сообщений: 669
22.09.2020, 22:12  [ТС] 7
Ооооо, кроссплотформенность. Да-да, пожалуйста, это в принципе то, ради чего я сюда лезу, в QT и плюсы)))
(ну и полный котроль памяти тоже меня сюда манит)
0
Croessmah
22.09.2020, 22:27     Qt и разделение логики и QML
  #8

Не по теме:

Цитата Сообщение от insite2012 Посмотреть сообщение
В QML же все элементы окна (ну или почти все) существуют всегда, но не всегда они видны.
Их можно создавать и удалять динамически.

0
22.09.2020, 22:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2020, 22:27
Привет! Вот еще темы с ответами:

Разделение данных и логики и ООП
Тренируюсь в ООП и вообще в C++ и появилась неприятная ошибка. Есть конструктор в классе BaseHouse:...

Разделение логики игры от рендера картинки
Сейчас пишу 2D морской бой с использованием SDL. Сделано главное меню, а также "этап" расстановки...

Подсветка QML элементов QML-ного плагина в QtCreator в случае нахождения QML файлов плагина в ресурсах!
Здравствуйте! Если сделать плагин для QML и подключить его в основном проекте ну как - то так:...

QMl/QT при нажатии на кнопку должен окрыться другой qml файл
Додал anchors Вот что я сделал: import QtQuick 2.5 import QtQuick.Controls 1.4 ...

Как подключить QML-файл в C++ по моде, а также получить ссылки на QML-элементы в C++
Читал в интернете, как подключать QML-файлы. Кто-то использует QQmlView, кто-то...

Qt.Quick | QML. Новичок. Пример по соединению кода C++ и QML
Я новичок в QML и нужна помощь. Раньше писал программы в QtWidgets, но потом понял что в QML писать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.