Thanks.
I resorted to setting the loader to visible: false and then on a UI event setting it to true. It's not ideal in every situation, but it'll work for my immediate need. I'm hoping the user doesn't trigger the UI event before 250ms in to the application as it's still moving.
Sent: Thursday, June 30, 2016 at 9:17 AM
From: "Jérôme Godbout" <jer...@bodycad.com>
To: "Dmitry Volosnykh" <dmitry.volosn...@gmail.com>
Cc: "Jason H" <jh...@gmx.com>, "interestqt-project.org" <interest@qt-project.org>
Subject: Re: [Interest] Problem with Loader loaded items showing
From: "Jérôme Godbout" <jer...@bodycad.com>
To: "Dmitry Volosnykh" <dmitry.volosn...@gmail.com>
Cc: "Jason H" <jh...@gmx.com>, "interestqt-project.org" <interest@qt-project.org>
Subject: Re: [Interest] Problem with Loader loaded items showing
I think it's related to the value assigned after the Component is created. The behavior kick in before the initial -width is assigned. This is because the width is not computed before teh widget is rendered and width is known.
There's a few thing to try:
1- You may try to set Behavior enabled: false upon creation, then on your Item Component.onCompleted: myBehavior.enabled: true
I'm not sure it will solve your problems but may worth the try, will not change the thing from happenning but could make it super fast you don't see it.
2- Init and then create the bindng onCompleted (it will be nasty if this component is used into other context where x can be set outside).
Item
{
x: -10000
Component.onCompleted: x = Qt.binding(function(){ return -menu.width; });
}
3- You can also try to use Loader.setSource(url source, object properties) call instead to initialize the Component with wanted value:
Loader
{
id: loader_
property string srcFilename: "MyPathToFile.qml"
onSrcFilenameChanged: updateSourceAndBinding()
Component.onCompleted: updateSourceAndBinding()
function updateSourceAndBinding()
{
loader_.setSource(srcFilename, {'x': -10000 });
}
onLoaded:
{
item.x = Qt.binding(function(){ return -item.width; });
}
}
On Wed, Jun 29, 2016 at 1:04 PM, Dmitry Volosnykh <dmitry.volosn...@gmail.com> wrote:
Hi, Jason,you'd better provide complete example of your issue. Anyway, Loader is an Item itself. Have you positioned it accordingly?On Wed, Jun 29, 2016 at 6:44 PM Jason H <jh...@gmx.com> wrote:I had a working app with a menu that slides in.
I converted it to use a Loader to load the area that contains the menu and the start page. Now the menu shows up when the app first starts.
Despite my Menu.qml being:
Item {
id: menu
x: -width //I should be off-screen!
visible: false // you're not visible!!!
Behavior on x {
NumberAnimation {
duration: 250
}
}
...
}
qml: loaderState 1
qml: menu.width 480
qml: menu.x -480
qml: root.onCompeleted
It shows and slides to the left. If I comment out the behavior, it works fine. I'm not sure why it's starting at X position 0, when it didn't before. It doesn't look like it is being assigned to zero anywhere in initialization.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest