0

QStackedLayout2 つのQWidgetオブジェクトが追加された があります。2 番目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

ここで、2 番目 (上部) のウィジェットを表示および非表示にできるようにしたいと考えています。m_qmlWidget->setVisible(false);orを呼び出してこれを行いm_qmlWidget->setVisible(true);ますが、これを行うたびに、ウィジェットは完全に空白 (白色) にペイントされ、背景が透明色に変わった直後です。最初のウィジェットはほとんど黒になるので、これは私にとって問題です。問題の理由は、QML ファイルが読み込まれており、再描画イベントがブロックされているためだと思います。私の頭に浮かぶ2つの解決策は次のとおりです。

  • QML ファイルを非同期にロードする
  • 2 番目のウィジェットが表示されていないときにアンロードしない

残念ながら、これらのオプションの両方を実行することは不可能です。白い背景がちらつく問題を解決するにはどうすればよいですか?

visibleQWidgetを true または falseに変更すると、ちらつきが発生します。一番上のウィジェットを非表示にするとちらつきが発生する理由がわかりません。


ここでは、実用的なサンプル プロジェクトを見つけることができます。多分QOpenGLWidgetオブジェクトはここで問題です。2 つのウィジェットを作成しても問題は発生しなかったようです。

4

0 に答える 0