У меня есть QQuickItem
, полученный со стороны С++, как это.
QQuickItem * my_item = qmlEngine->rootObjects()[0]->findChild<QQuickItem*>("ItemObjectName");
my_item
действителен и имеет все установленные для него свойства.
Сценарий
У меня есть 2 окна, которым нужно, чтобы это QQuickItem
отображалось попеременно. Я хочу отобразить это my_item
в другом окне. Это прекрасно работает, пока я устанавливаю Parent my_item
в другое окно.
// the_other_window is a QQuickWindow
QQuickWindow * the_other_window;
// here I set parent
my_item->setParentItem(the_other_window->contentItem());
Это требует, чтобы я снова сделал setParentItem
обратно в исходное окно my_item
, иначе оно станет невидимым в исходном окне. Это работает, но дает мне ненужную зависимость. Вместо этого я пытаюсь создать копию QQuickItem
и сделать на ней setParentItem
. Скопировав так:
QQuickItem * item_copy = new QQuickItem(my_item);
Вопрос: я хочу сделать item_copy
таким же, как my_item
. Я узнал, что QQuickItem
нельзя скопировать. Итак, вы хотите установить все свойства my_item
в item_copy
. Таким образом воссоздавая my_item
с нуля. Как я могу это сделать? Какие свойства следует копировать в первую очередь? ширина, высота, x, y и что еще?
Есть ли способ скопировать все действительные свойства в этот новый, не копируя каждое по одному?