Заменить встраиваемое окно qt в виджет через QWidget :: createWindowContainer

У меня есть окно QML, встроенное в QWidget с помощью QWidget::createWindowContainer(),

Чтобы обеспечить некоторые возможности перезагрузки без скрытия окна, я хотел бы иметь возможность заменить базовое (встроенное) окно qml, не разрушая и не воссоздавая родительский виджет.

То, что я пробовал до сих пор,

QQmlApplicationEngine engine;

// First time
// Load the qml file
engine.load("main.qml");
// Get the window
QWindow* window = static_cast<QWindow*>(engine.rootObjects().last());
// Create the window container
QWidget* container = QWidget::createWindowContainer(qmlWindow);
// -> This works perfectly well

// Other times
// Get the old window
QWindow* oldWindow = static_cast<QWindow*>(engine.rootObjects().last());
// And its container
QWindow* container = oldWindow->parent();
// Close the old window
lOldWindow->close();

// Load the qml
engine.load("main.qml");
// Get the new qml window
QWindow* window = static_cast<QWindow*>(engine.rootObjects().last());
// Reparent it to the old window's container
lWindow->setParent(lContainer);
// -> The newly created window does not show up

Я использовал, чтобы полностью удалить окно контейнера и воссоздать его (с createWindowContainer) и это работало на отлично, но я хотел бы избегать удаления виджета контейнера снова и снова.
Как мне этого добиться?

(Обратите внимание, что для простоты кода нет ни проверки указателей, ни обработки ошибок, нет необходимости комментировать это :))

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]