【发布时间】:2019-04-13 23:34:40
【问题描述】:
main.qml:
import QtQuick 2.11
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
ApplicationWindow {
id: window
x: 200
y: 200
visible: true
Component {
id: firstViewComponent
FirstView {
id: firstView
}
}
StackView {
id: stackView
anchors.fill: parent
Component.onCompleted: push(firstViewComponent)
}
Timer {
interval: 1000
running: true
onTriggered: stackView.pop()
}
}
FirstView.qml:
Rectangle {
id: view
StackView.onDeactivating: console.log('view: view is deactivating')
ListModel {
id: aModel
ListElement {
name: 'Element 0'
}
ListElement {
name: 'Element 1'
}
}
ListView {
id: listView
model: aModel
delegate: Rectangle {
id: listViewDelegate
Connections {
target: view.StackView // <---- DOESN'T WORK
onDeactivating: console.log('delegate ' + index + ': needs to do some housekeeping now')
}
}
}
}
我有一个由 main.qml 中的 StackView 实例化的视图。 StackView 将信号 StackView.onDeactivating 附加到视图。除了信号附加到的对象之外,还有什么方法可以附加到来自其他对象的信号?弹出视图时,我需要在 listViewDelegate 中进行一些清理。
我可以让视图发出自己的信号,并让委托响应该信号。但我想知道是否有办法连接到附加信号:StackView.onDeactivating from a different object (listViewDelegate)。
【问题讨论】:
-
什么是
myView?,请提供minimal reproducible example -
查看answer
-
@eylianesc 更正。
-
还在纠正中..@Redanium 我对qml和js有基本的了解,这涉及到访问一个附加属性,这是一个qml概念。
-
@eyllanesc - 我可以通过将以下行添加到 FirstView.qml 来解决我的问题(以一种方式):信号隐藏(); StackView.onDeactivating: { hidden() },以及委托: Connections { target: view;隐藏:{ doSomething() }。如果你注意我的问题,你就会明白这一点。 FirstView 没有被 pop() 操作消除(还没有),这就是信号 StackView.onDeactivating 的目的。尊敬的,如果你花更少的时间试图“反驳”人们的问题,而花更多的时间试图理解他们在问什么,那将会更有帮助。
标签: qt qml attached-properties