0

我正在我的应用程序中实现 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 信号。是否有任何与我需要做的堆栈视图相关的设置,我阅读了堆栈视图的文档,但没有找到任何限制这种行为的东西。

4

1 回答 1

1

好像Pane通常是拦截鼠标事件,所以较低Item的 s 无法接收到它们。

当您将新项目推上时,将不再StackView关心输入。如果 new不处理鼠标事件,它们将传播到 lower 。Panevisible: falseItemItem

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

  1. 确保所有Item推到 s 上的 sStackView都将处理鼠标事件,例如通过创建 aPane或 aMouseArea根项目。
  2. 将 aMouseArea直接放在StackView仅当有Items时才启用StackView
  3. 更多...例如在 C++ 中安装EventFilters 等,但我认为 1 和 2 应该足够并且易于实现。
于 2017-10-30T13:41:13.310 回答