2011-10-20 41 views
5

私はLoaderを使用して、複数の画面/ページをロードしています。QMLの画面/ページを削除/削除するには?

私は約10個のQML画面/ページをマウスイベントで1つずつローダーにロードしています。

QWidget::setMask()機能を使用して透明度を設定する必要がある画面の一部では、画面/ページの一部を透明にして画面をパンチする機能があります。

rootObjectQWidget::setMask()Loaderの画面を使用してCPPコードからマスクを設定しています。

QWidget::setMaskは完全に機能していますが、マスクされた領域は以前に読み込まれた画面/ページを表示します。

Loader要素は、文書http://doc.qt.nokia.com/4.7-snapshot/qml-loader.htmlに記載されているように、Loaderに新しい画面/ページをロードする前に、読み込まれたコンポーネントを適切に削除/削除しますか?

はまた、私はローダーonDestructionイベントで新しい画面/ページをロードするとComponent.onDestroyedComponent.onDestruction

という名前の2つの機能があり、ロードされたスクリーンのために解雇されています。

ローダーで新しいページを読み込んだら、画面/ページをディスプレイから完全に削除/破棄したいと思います。 以前に読み込まれた画面の可視性と不透明度を設定しようとしましたが、それでもマスクされた領域に以前読み込まれた画面/ページが表示されています。

ローダーのsource = ""sourceComponent = undefinedを設定すると、以前にロードされたページがローダーに表示され、画面が更新されません。前のページは破棄されますが、ディスプレイから消去/削除されません。

どのような理由がありますか?

+0

あなたは1つのローダーを使用していて、そのソースプロパティを10個の画面の1つに変更していますか? –

+0

私はまったく同じ問題を抱えています。あなたはこれを解決することができましたか? – MokaT

答えて

0

シグナルComponent.onDestructionがロードされたqmlファイルで受信されたとき、またはonSourceChangedLoaderに受信したときに、C++でQWidget::clearMask()関数を使用しようとしましたか?

関連する問題