C++ 将QQuickView重新加载到同一窗口容器中

C++ 将QQuickView重新加载到同一窗口容器中,c++,qt,qtquick2,C++,Qt,Qtquick2,我想把插件写进我的程序中,作为qml显示在dock小部件中 我这样加载插件: if (!qview) qview = new QQuickView(); qview->engine()->clearComponentCache(); qview->setSource(QUrl(path)); QQuickItem *item_main = qview->rootObject(); QWindow* main_page = item_main->window()

我想把插件写进我的程序中,作为qml显示在dock小部件中

我这样加载插件:

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在重新加载后使用相同的窗口容器来加快重新加载速度,或者以某种方式避免窗口闪烁?

解决方案非常简单:

if (!qview) {
  QWindow *wnd = new QWindow();
  QWidget::createWindowContainer(wnd, ui->dockWidgetContents )->show();
  qview = new QQuickView(wnd);
}