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

时间:2015-04-04 08:20:52

标签: c++ qt qtquick2

我想将插件写入我的程序,因为qml显示在dock widget

我以这种方式加载插件:

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 个答案:

答案 0 :(得分:0)

解决方案恰好很简单:

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