Flow QML Type: связь с моделью, динамическое добавление и удаление элементов
views, QML, View, flow, view, model, qml, вёрстка qml, Model
Надо: подтягивать из с++ список слов, делать из них кнопки. Ширина кнопок соответствует ширине текста. При заполнении одной строки (ряда) - переход на следующую.
С передачей данных из с++, сигналами и слотами, вроде пока понятно. На данный момент затруднения с вёрсткой. ListView и GridView не подходят.
Подходит Flow QML Type, но с ним нельзя работать как с моделью-представлением. Или можно?
https://doc.qt.io/qt-5/qml-qtquick-flow.html
Как динамически добавлять-убирать элементы Flow?
И как применить свойства для каждого элемента Flow, как в данном случае это сделано для первого id: first_button
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Flow { id: flow_id anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter anchors.margins: 4 spacing: 10 width: parent.width/1.5 Button { id: first_button Text { id: first_button_text text: "Text" font.pointSize: 15 anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter } width: first_button_text.width + 12 } Button { text: "items"; font.pointSize: 15 } Button { text: "flowing"; font.pointSize: 15 } Button { text: "inside"; font.pointSize: 15 } Button { text: "a"; font.pointSize: 15 } Button { text: "Flow"; font.pointSize: 15 } Button { text: "item"; font.pointSize: 15 } } }
Как ещё можно было бы, я думаю: создать Row определённой ширины, добавлять в него кнопки и следить за суммой ширины кнопок, если ширина кнопок (с учётом margin конечно) на следующей итерации больше ширины Row то создавать следующий Row и так далее. Опять же, я не представляю как это сделать на практике. С model->view всё было как-то проще.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Akiv Doros
- 12 ноября 2024 г. 1:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
- molni99
- 26 октября 2024 г. 11:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
- molni99
- 26 октября 2024 г. 11:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Полагаю, что нужно использовать Repeater. Он может формировать объекты из модели. Если добавлять и убирать объекты в модели, то по идее Repeater должен перестраивать объекты во flow.
Здесь уже обсуждался кейс, подобный вашему - ссылка на сообщение
Класс, похоже то что надо, спасибо.
Что-то не получалось, собирался задать вопрос, но вроде разобрался. Пока разбирался сделал кракозябру из кода по ссылке и кода из урока QML - Урок 007. ListView Qml . Не пропадать же добру, пусть будет.
Пояснение: добавил к примеру ListView Qml --> Flow с Repeater'ом. Оба подсосаны к одной модели и в таком виде без ругани работают (пока что) как ожидается.
А вопрос на котором споткнулся решился тем что в репитере text: model.text заменил на text: modelData