Перезагрузите 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);
}