如何在QML中从显示中删除/删除屏幕/页面?

kba*_*lar 5 qt qml qt-quick

我有一个Loader使用我正在加载多个屏幕/页面.

我有大约10个QML屏幕/页面,我在鼠标事件中逐个加载到加载程序中.

在某些屏幕上,我需要使用QWidget::setMask()功能设置透明度,使屏幕/页面的某些部分变得透明,并在屏幕上打孔.

我使用CPP代码做设定屏蔽QWidget::setMask()rootObject,这是Loader屏幕.

QWidget::setMask 工作正常,但屏蔽区域显示以前加载的屏幕/页面.

所以我有一个问题,如在文档http://doc.qt.nokia.com/4.7-snapshot/qml-中提到的那样,Loader元素在加载新屏幕/页面之前是否正确地从显示中删除/删除了已加载的组件.loader.html.Loader

还有两个名为Component.onDestroyedand的函数Component.onDestruction

当我在Loader onDestruction事件中加载新的屏幕/页面时,被加载的屏幕被触发.

我想在加载器中加载新页面后,从显示中完全删除/销毁屏幕/页面.我还尝试设置以前加载的屏幕的可见性和不透明度,但我仍然可以在蒙版区域中看到以前加载的屏幕/页面.

如果我设置了加载器source = "",sourceComponent = undefined然后我也可以在Loader中看到之前加载的页面,它不会刷新屏幕.上一页被销毁,但未从显示中清除/删除.

应该是什么原因?

Fil*_*ski 0

您是否尝试过在加载的 qml 文件中接收信号或接收信号时使用QWidget::clearMask()C++ 中的函数?Component.onDestructiononSourceChangedLoader