上一个屏幕的 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
。
为防止这种情况发生,您有多种选择:
- 确保
StackView
上按下的所有 Item
都将处理鼠标事件,例如通过使 Pane
或 MouseArea
成为根项。
- 在
StackView
正下方放置一个 MouseArea
,仅当 StackView
上有 Item
时才启用
- 更多...例如在 C++ e.t.c 中安装
EventFilter
s。但我认为 1 和 2 应该足够了并且易于实现。
我正在我的应用程序中实现堆栈视图。
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
。
为防止这种情况发生,您有多种选择:
- 确保
StackView
上按下的所有Item
都将处理鼠标事件,例如通过使Pane
或MouseArea
成为根项。 - 在
StackView
正下方放置一个MouseArea
,仅当StackView
上有 - 更多...例如在 C++ e.t.c 中安装
EventFilter
s。但我认为 1 和 2 应该足够了并且易于实现。
Item
时才启用