Перезагрузите QQuickView в тот же контейнер окна

Я хочу написать плагины для моей программы в виде qml, отображаемого внутри док-виджета

Я загружаю плагин таким образом:

if (!qview) 
  qview = new QQuickView();
qview->engine()->clearComponentCache();
qview->setSource(QUrl(path));
QQuickItem *item_main = qview->rootObject();
QWindow* main_page = item_main->window();  
auto container = QWidget::createWindowContainer( main_page, ui- >dockWidgetContents );
container->show();

Работает нормально, но перезагрузка плагина довольно медленная и вызывает мерцание. Я думаю, это потому, что createWindowContainer каждый раз создает собственное окно.Могу ли я ускорить перезагрузку, заставив QQuickView использовать тот же контейнер окна после перезагрузки, или как-то избежать мерцания окна?

1 ответ

Решение оказывается довольно простым:

if (!qview) {
  QWindow *wnd = new QWindow();
  QWidget::createWindowContainer(wnd, ui->dockWidgetContents )->show();
  qview = new QQuickView(wnd);
}
Другие вопросы по тегам