5

Loader複数の画面/ページをロードするために使用しているものがあります。

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

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

画面であるを使用QWidget::setMask()して、CPPコードからマスクを設定しています。rootObjectLoader

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

だから私は質問があります、ドキュメントhttp://doc.qt.nokia.com/4.7-snapshot/qml-Loaderに記載されているように、要素は新しい画面/ページをロードする前に、ロードされたコンポーネントをディスプレイから適切に削除/削除しますか? loader.htmlLoader

また、とという名前の2つの関数がComponent.onDestroyedありますComponent.onDestruction

ローダーで新しい画面/ページをロードするonDestructionと、ロードされた画面に対してイベントが発生します。

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

ローダーを設定source = ""sourceComponent = undefinedた後、以前にロードされたページがローダーに表示されても、画面が更新されません。前のページは破棄されますが、表示からクリア/削除されません。

理由は何ですか?

4

1 に答える 1

0

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

于 2015-08-01T23:14:36.677 に答える