0

我有一个添加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将第二个更改QWidget为真或假时会发生闪烁。我不明白为什么在隐藏顶部小部件时会发生闪烁。


在这里您可以找到一个工作示例项目。也许QOpenGLWidget对象是这里的问题。创建两个小部件似乎没有产生问题。

4

0 回答 0