加载QQuickView时防止闪烁

时间:2016-06-25 11:42:31

标签: qt qt5 qwidget qquickview

我有一个QStackedLayout,其中添加了两个QWidget个对象。第二个QWidget创建如下:

QQuickView *view = new QQuickView();
view->setColor(Qt::transparent);
view->setSource(QUrl("qrc:/main.qml"));
m_qmlWidget = QWidget::createWindowContainer(view, this); // this is a QWidget object

现在我希望能够显示和隐藏第二个(顶部)小部件。我通过调用m_qmlWidget->setVisible(false);m_qmlWidget->setVisible(true);来执行此操作,但每当我执行此操作时,窗口小部件将被绘制为整个空白(白色),并且在将背景更改为透明颜色后不久。这对我来说是个问题,因为第一个小部件大多是黑色的。我认为问题的原因是正在加载QML文件并阻止重绘事件。我想到的两个解决方案是:

  • 异步加载QML文件
  • 当第二个小部件不可见时,不要卸载第二个小部件

我担心这两种选择都是不可能的。如何通过闪烁的白色背景解决问题?

当我将第二个visible的{​​{1}}更改为true或false时,会发生闪烁。我不明白为什么隐藏顶部小部件会发生闪烁。

Here您可以找到一个有效的示例项目。也许QWidget对象是问题所在。创建两个小部件似乎没有产生问题。

0 个答案:

没有答案