Визуализация QQuickItem во втором окне без изменения его родительской иерархии

Я должен отобразить QQuickItem, принадлежащий определенному окну, в другое. В основном MyQQuickItem принадлежит окну1 для рендеринга в окне2. Это переключение должно происходить в моем приложении неоднократно из-за определенной функциональности.

Я делаю следующее для достижения цели, и код в основном работает нормально.

Код:

MyQQuickItem * myQuickItem = qmlEngine->rootObjects()[0]->findChild<QQuickItem*>("myquickitemobject");
myQuickItem->setParentItem(window1->contentItem());

// do the required on window2

// then set window1 as parent back again
myQuickItem->setParentItem(window2->contentItem());

Проблема
Описанная выше техника работает нормально. Но это требует, чтобы я несколько раз переключался между установкой родительского элемента из окна1 в окно2 и обратно.

Вопрос.
Есть ли другой способ разделить MyQQuickItem между двумя окнами? Или возможно ли отображать MyQQuickItem в обоих окнах поочередно без изменения родительской иерархии?


person TheWaterProgrammer    schedule 10.09.2017    source источник
comment
Я не думаю, что это возможно. Возможно, играя с низкоуровневым окном или классами openGL, но не с qml/quick самостоятельно. Вы можете поместить его в виджет и изменить родителя виджета, хотя   -  person Felix    schedule 11.09.2017
comment
stackoverflow.com/questions/46117093/   -  person GrecKo    schedule 11.09.2017


Ответы (1)


Вы можете использовать grabToImage() и отобразить захваченное изображение во втором окне.
Это может быть не идеально с точки зрения производительности. Вы можете найти некоторые вопросы о том, как это сделать на этом сайте. Особенно интересным может быть это.

Я не знаю вашего случая, но может быть лучше иметь два экземпляра одного и того же компонента, отображающих одну и ту же модель данных - возможно, с отключенным вводом для одного.

person derM    schedule 11.09.2017