[Interest] React to signal only when at top of StackView
Elvis Stansvik
elvstone at gmail.com
Fri May 6 23:27:46 CEST 2016
2016-05-06 22:41 GMT+02:00 J-P Nurmi <jpnurmi at qt.io>:
>> On 06 May 2016, at 22:27, Elvis Stansvik <elvstone at gmail.com> wrote:
>>
>> Hi all,
>>
>> I want that an item reacts to a certain signal only when it is at the
>> top of a StackView, so I tried something like:
>>
>> Connections {
>> // Below won't work:
>> target: Stack.status === Stack.Active ? button : null
>> //target: button // ..but this works
>> onClicked: console.log("clicked")
>> }
>>
>> That is, making the target of the connection null unless Stack.status
>> == Stack.Active, but it seems it's not working.
>>
>> Full example below:
>>
>> import QtQuick 2.4
>> import QtQuick.Controls 1.3
>> import QtQuick.Window 2.2
>>
>> Window {
>> id: window
>> width: 500
>> height: 500
>> visible: true
>>
>> Column {
>> Rectangle {
>> width: 100
>> height: 100
>> color: "gray"
>>
>> MouseArea {
>> id: button
>> anchors.fill: parent
>> Text {
>> text: "Click Me"
>> anchors.centerIn: parent
>> }
>> }
>> }
>>
>> StackView {
>> id: stackView
>> width: 100
>> height: 100
>>
>> initialItem: Rectangle {
>> anchors.fill: parent
>> color: "green"
>> Connections {
>> // Below won't work:
>> target: Stack.status === Stack.Active ? button : null
>> //target: button // ..but this works
>> onClicked: console.log("clicked")
>> }
>> }
>> }
>> }
>> }
>>
>> Anyone know what the problem might be? The item here is definitely
>> active on the stack, since it's the initial (and only item).
>>
>
> Hi,
>
> The Stack.status property must be attached to an item that is in a StackView. In the snippet above, it is attached to the Connections element. You can give the Rectangle element an id to be able to attach the property to it instead.
>
> initialItem: Rectangle {
> id: rect // <==
> anchors.fill: parent
> color: "green"
> Connections {
> target: rect.Stack.status === rect.Stack.Active ? button : null // <==
BTW, out of curiosity, do you know why the above works, but not:
target: parent.Stack.status === parent.Stack.Active
? button : null // <==
?
Elvis
> onClicked: console.log("clicked")
> }
> }
>
> --
> J-P Nurmi
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
More information about the Interest
mailing list