Russian Qt Forum

Qt => Qt Quick => Тема начата: juvf от Сентябрь 30, 2022, 09:58



Название: Динамические кнопки в QML
Отправлено: juvf от Сентябрь 30, 2022, 09:58
Подскажите, как такое реализовать?

допустим есть кнопка "+". Нажимаешь - появляется рядом кнопка с текстом (пусть будет "1"). Нужно запомнить эту кнопку. Как запомнить - отдельная тема. При повторном запуске должно быть две кнопки: "+" и "1". Добавили ещё 3 кнопки с текстом "2", "3" и "4". Закрыли приложение, открыли - на экране должно быть пять кнопок: "+", "1", "2", "3", "4".
Т.е. при запуске приложения как то нужно считать какой-то конфиг/сеттинг и нарисовать создать столько кнопок, сколько нужно и с текстом с которым нужно.

Может есть пример для Qml динамического создания кнопок?


Название: Re: Динамические кнопки в QML
Отправлено: kambala от Сентябрь 30, 2022, 12:28
создавать объекты динамически можно несколькими способами, см. https://doc.qt.io/qt-6/qtqml-javascript-dynamicobjectcreation.html

пример из проекта, лишь нужный кусок:
Код
C++ (Qt)
Component {
id: flow
Flow {
spacing: 5
Layout.fillWidth: true
}
}
 
// где-то на форме:
ColumnLayout {
id: answerElementsContainer
spacing: 5
}
 
// в обработчике кнопки пишем:
const flowElement = flow.createObject(answerElementsContainer)
здесь объект Flow будет помещен в ColumnLayout.

сохранять созданные элементы можно, например, в жс массиве.

сохранить конфигурацию проще всего наверное через QSettings, но для этого надо будет вызвать C++ из QML.