我想将插件写入我的程序,因为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重新加载后使用相同的窗口容器或以某种方式避免窗口闪烁来加快重新加载吗?
答案 0 :(得分:0)
解决方案恰好很简单:
if (!qview) {
QWindow *wnd = new QWindow();
QWidget::createWindowContainer(wnd, ui->dockWidgetContents )->show();
qview = new QQuickView(wnd);
}