上一个屏幕的 Stackview 调用槽

Stackview calling slots for previous screen

我正在我的应用程序中实现堆栈视图。

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 信号。有没有我需要做的与堆栈视图相关的设置,我阅读了堆栈视图的文档,但没有找到任何限制此行为的内容。

好像Pane一般都是在拦截鼠标事件,所以下面的Item接收不到。

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

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

  1. 确保 StackView 上按下的所有 Item 都将处理鼠标事件,例如通过使 PaneMouseArea 成为根项。
  2. StackView 正下方放置一个 MouseArea,仅当 StackView
  3. 上有 Item 时才启用
  4. 更多...例如在 C++ e.t.c 中安装 EventFilters。但我认为 1 和 2 应该足够了并且易于实现。