我有一个添加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
对象是这里的问题。创建两个小部件似乎没有产生问题。