QStackedLayout
2 つの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 番目のウィジェットが表示されていないときにアンロードしない
残念ながら、これらのオプションの両方を実行することは不可能です。白い背景がちらつく問題を解決するにはどうすればよいですか?
visible
秒QWidget
を true または falseに変更すると、ちらつきが発生します。一番上のウィジェットを非表示にするとちらつきが発生する理由がわかりません。
ここでは、実用的なサンプル プロジェクトを見つけることができます。多分QOpenGLWidget
オブジェクトはここで問題です。2 つのウィジェットを作成しても問題は発生しなかったようです。