Russian Qt Forum
Ноябрь 22, 2024, 19:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамические кнопки в QML  (Прочитано 1860 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Сентябрь 30, 2022, 09:58 »

Подскажите, как такое реализовать?

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

Может есть пример для Qml динамического создания кнопок?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Сентябрь 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.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.