Stackview调用前一个屏幕的插槽

时间:2017-10-30 12:25:35

标签: qt qml stackview

我正在我的应用程序中实现stackview。

SwipeView {
id: swipeView
anchors.fill: parent
currentIndex: showfooter.currentIndex

        DashboardListView{
        id:dashboard
        }

        Settings{
        id:setting
        }

        Cart{
        id:cart
        }
}


StackView {
   id: stackView

   initialItem: Pane {
      id: pane
   }
}

当我使用push方法从DashboardListView加载一些其他屏幕(如SightDescription.qml)并在该屏幕上的某个地方克服其DashboardListView的调用槽。 DashboardListView屏幕控件正在获取onclick信号。是否有任何与堆栈视图相关的设置需要执行,我阅读了stackview的文档,但没有找到任何限制此行为的内容。

1 个答案:

答案 0 :(得分:1)

似乎Pane通常会拦截鼠标事件,因此较低的Item无法接收它们。

当您在StackView上推送新项目时Pane变为visible: false,因此不再关心输入。如果新Item未处理鼠标事件,则它们将传播到较低的Item

为了防止这种情况,您有多种选择:

  1. 确保推送Item上的所有StackView都会处理鼠标事件,例如通过制作PaneMouseArea根项目。
  2. MouseArea直接放在仅StackView
  3. 上有Item s时启用的StackView下方
  4. 更多......例如在C ++ e.t.c中安装EventFilter。但我认为1和2应该足够并且易于实施。