[Interest] How to determine whether QML item is anchored?

Jérôme Godbout godboutj at amotus.ca
Fri Apr 6 15:14:16 CEST 2018


You might want to check the state since you use the state to change the anchors. You could add objectName or another property to your state to check your condition.

property bool isAnchors: myObj.states.find(function(s){ return s.name == myObj.state; }).myPropertyBool;


State

{

  property bool myPropertyBool: true // put true when you need it

}


Not sure if the Anchors is an attachement object, not sure you can probe it directly unless you seek into the Object children to find Attachment object of any kind, else you might want to check if you can reach the anchors property:
property bool isAnchors: fetchAnchors(myObj)

function fetchAnchors(o)
{
  return o && o.anchors && o.anchors.top;  // anchors cannot be null, only undefined, so the if value should work
}

________________________________
From: Interest <interest-bounces+godboutj=amotus.ca at qt-project.org> on behalf of Shawn Rutledge <Shawn.Rutledge at qt.io>
Sent: April 6, 2018 8:21 AM
To: interest at qt-project.org
Subject: Re: [Interest] How to determine whether QML item is anchored?

But I wanted to query anchors at runtime once too, a few years ago; I think I’ve forgotten why.

> On 6 Apr 2018, at 13:58, Mitch Curtis <mitch.curtis at qt.io> wrote:
>
> https://bugreports.qt.io/browse/QTBUG-66264 is semi-related to this, or at least explains why we can’t really return null if they’re not set.
>
> Without having more information about your use case, it seems like quite a corner case.
>
> From: Alexander Ivash [mailto:elderorb at gmail.com]
> Sent: Friday, 6 April 2018 1:41 PM
> To: Mitch Curtis <mitch.curtis at qt.io>
> Cc: interest at qt-project.org
> Subject: Re: [Interest] How to determine whether QML item is anchored?
>
> Thanks, I'm aware of this, but this is a bit different.. Would be great to get ability to compare against something like anchors.defaultLeft or anchors.NoAnchor in future.
>
> Sent from Mailspring, the best free email app for work
> On Apr 6 2018, at 2:38 pm, Mitch Curtis <mitch.curtis at qt.io> wrote:
>
> I’m not sure if it helps in your situation, but perhaps you could take a look at AnchorChanges:
>
>
>
> http://doc.qt.io/qt-5/qml-qtquick-anchorchanges.html
>
>
>
> When the item is in an “anchored” state:
>
>
>
>     states: [
>
>         State {
>
>             name: "anchored"
>
>
>
>             AnchorChanges {
>
>                 target: myRect
>
>                 anchors.top: window.top
>
>                 anchors.bottom: window.bottom
>
>             }
>
>             PropertyChanges {
>
>                 target: myRect
>
>                 color: "green"
>
>             }
>
>         },
>
>         State {
>
>             name: "not-anchored"
>
>
>
>             AnchorChanges {
>
>                 target: myRect
>
>                 anchors.top: undefined
>
>                 anchors.bottom: undefined
>
>             }
>
>
>
>             PropertyChanges {
>
>                 target: myRect
>
>                 color: "red"
>
>             }
>
>         }
>
>     ]
>
>
>
> This assumes that you have control over the anchors, though.
>
>
>
> From: Alexander Ivash [mailto:elderorb at gmail.com]
> Sent: Friday, 6 April 2018 1:23 PM
> To: Mitch Curtis <mitch.curtis at qt.io>
> Cc: interest at qt-project.org
> Subject: Re: [Interest] How to determine whether QML item is anchored?
>
>
> Let's say I'm trying to make the logic like this: "If parent component is anchored, make a child green, otherwise make it red"
>
>
> Sent from Mailspring, the best free email app for work
> On Apr 6 2018, at 2:20 pm, Mitch Curtis <mitch.curtis at qt.io> wrote:
>
>
> What are you trying to do?
>
>
>
>
>
> From: Interest [mailto:interest-bounces+mitch.curtis=qt.io at qt-project.org] On Behalf Of Alexander Ivash
> Sent: Friday, 6 April 2018 11:40 AM
> To: interest at qt-project.org
> Subject: [Interest] How to determine whether QML item is anchored?
>
>
>
> What I'm missing? It seems like even not anchored item has anchors.right/left/top/bottom set, so it is not possible to compare with 'undefined' or something. Of course introducing change handler allows to track moment of anchoring (although still no way to track un-anchoring), but this is a bit ugly and not 'Qt-way'.
>
>
>
> Sent from Mailspring, the best free email app for work
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

_______________________________________________
Interest mailing list
Interest at qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20180406/ebb6e143/attachment.html>


More information about the Interest mailing list