[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