[EDIT] entfernen: Ich mag einige Steuerelemente entfernen, die dynamisch in Spalte QML Art erstellt werden, und auch, wie die Kinder eines Layouts zugreifen? .Following ist der Code, der nicht dynamisch ist und nur als Referenz:Wie ein dynamisch erstellte Element aus Spalte QML Elemente
import QtQuick 2.6
import QtQuick.controls 2.2
Item
{
Column {
id:col
spacing: 2
//Initially Adding controls.
Rectangle { color: "red"; width: 50; height: 50 }
Rectangle { color: "green"; width: 20; height: 50 }
Rectangle { color: "blue"; width: 50; height: 20 }
}
Button
{
id:button
onClicked:
{
//How to remove a perticular element from above column which is created dynamically?
}
}
// [EDIT] - Code to add controls dynamically to column.
}
Mögliche Duplikat von [ Delete children of QML Grid] (https://stackoverflow.com/questions/8851164/delete-children-of-qml-grid) – m7913d
Ich würde normalerweise vorschlagen, einen datengesteuerten Ansatz zu wählen ('Repe äter 'usw.) anstatt Elemente manuell zu erstellen und zu zerstören. – peppe
@ m7913d sollten Sie sich nie auf den Garbage Collector verlassen. Es funktioniert nur dann zuverlässig, wenn Sie 'component.createObject (null)' verwenden und dann Ihr Objekt zu zufälligen Zeiten zuverlässig zerstören, höchstwahrscheinlich bevor es weg sein soll, da die Referenzzählung unterbrochen ist. Wenn es zu selten ausgeführt wird, wird Ihre Anwendung abstürzen, sobald es ausgeführt wird. Wenn Sie 'component.createObject (someParent)' verwenden, wird es überhaupt nicht funktionieren. Dann ist es Ihre Verantwortung, es mit 'instance.destroy()' zu zerstören. Aus den oben genannten Gründen ist dies der einzige vernünftige Weg, mit dynamischer Instanziierung von JS umzugehen. – derM