Czołem Bracia i Siostry w kodzie
W jaki sposób w qmlu mogę skopiować uzyskany z ObjectModel.get(someIndex)
item, powiedzmy Rectangle, i wyświetlić kopię w jakimś innym miejscu?
Niestety Loader.sourceComponent = itemFromModel;
zwraca błąd Cannot assign QObject* to QQmlComponent*
, a użyć Qt.createQmlObject()
czy Qt.createComponent()
też nie mogę bo chcę działać na itemie z modelu a nie plikach qml, czy qstringach. No to skoro nie tego, to czego jeszcze mogę użyć?
EDIT:
Bracie @MarekR22 nie mogłem tego qml online odpalić, ale kod jest https://tinyurl.com/yf95vw6g
import QtQuick 2.12
import QtQml.Models 2.15
import QtQuick.Controls 2.12
ApplicationWindow
{
id: mainWindow
ObjectModel
{
id: sharedModel
Rectangle { height: 30; width: 80; color: "red" }
Rectangle { height: 30; width: 80; color: "green" }
Rectangle { height: 30; width: 80; color: "blue" }
}
ListView
{
id: mainList
model: sharedModel
anchors.top: parent.top
anchors.left: parent.left
anchors.bottom: parent.bottom
width: parent.width / 2
Keys.onPressed:
{
if (event.key === Qt.Key_OK || event.key === Qt.Key_Return)
{
rightArea.addItem(sharedModel.get(0));
}
}
}
Rectangle
{
id: rightArea
anchors.top: parent.top
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.left: mainList.right
function addItem(Item)
{
//I tutaj co zrobić żeby wyciągnięty z modelu item sklonować? Jako parenta ma mieć owo rightArea
//przyuważ Marku iż w modelu może (i będzie) siedziało coś bardziej skomplikowanego niż prostokąt
}
}
}