【问题标题】:Stackview calling slots for previous screenStackview 调用前一屏幕的插槽
【发布时间】:2017-10-30 12:25:34
【问题描述】:

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

【问题讨论】:

    标签: qt qml stackview


    【解决方案1】:

    好像Pane经常拦截鼠标事件,所以下方的Items收不到。

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

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

    1. 确保所有Items 推送到StackView 将处理鼠标事件,例如通过将 PaneMouseArea 设为根项。
    2. StackView 正下方放置一个MouseArea,仅当StackView 上有Items 时才启用
    3. 更多...例如在 C++ 等中安装 EventFilters。但我认为 1 和 2 应该足够了,并且易于实施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多