Повторитель, компоненты ListView, которые имеют структуру модели / делегата, полностью сбрасываются при изменении элемента в массиве.
В приведенном ниже примере делегатом является «Кнопка и его собственное всплывающее окно».
Во-первых, наведите курсор мыши на кнопку, и вы увидите, что кнопка имеет эффект наведения, меняющий цвет и т. Д. c. Затем, через две секунды, когда сработает таймер, этот эффект наведения будет сброшен.
Во-вторых, нажмите кнопку, откроется всплывающее окно, затем, когда сработает таймер, всплывающее окно закроется.
Я не уверен, если это ошибка или нет. Если это не так, пожалуйста, порекомендуйте мне способ иметь список, в котором я могу изменить элементы, и он не будет сброшен.
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
Window {
id: window
width: 300
height: 300
color: "black"
property var array: [0]
Timer {
running: true
repeat: true
interval: 2000
onTriggered: {
++array[0]
// Value won't change if it's not set to itself
array = array
}
}
// All "Item"s are being fully reset, at every update
// the hover effect on button disappears,
// and modal is being closed
Repeater {
model: array
delegate: Item {
Button {
text: "Open My Popup"
onClicked: modal.open()
}
Popup {
id: modal
anchors.centerIn: Overlay.overlay
modal: true
Text {
text: model.modelData
color: "white"
}
}
}
}
}