I agree, this would be difficult to know if this should create a binding or simply copy the current value. This is why I was proposing the function where we could go with either = or Qt.binding() to have full control on it. Nice to see this was there at some point, I wonder why they removed it or never integrate it.
On Wed, Apr 13, 2016 at 2:07 AM, Sina Dogru <sinado...@gmail.com> wrote: > It's sad that the imperative setSource() function can set those property >> and the declarative way is not. >> > > It would also be great but to make something a property instead of a > function where it is much easier, then there should be a public and > QMetaType known type.Thats why seems like hard to make it possible. > > 2016-04-04 16:31 GMT+03:00 Jérôme Godbout <jer...@bodycad.com>: > >> Thanks for pointing this out, but I was aware of that. Sometime a default >> value is impossible (null) making bad behavior or bad binding, primitive >> type can always have default value that make sense that way but complex >> object don't. >> It's sad that the imperative setSource() function can set those property >> and the declarative way is not. >> >> On Sun, Apr 3, 2016 at 11:10 AM, ekke <e...@ekkes-corner.org> wrote: >> >>> if you want to refer to a property as 'model.i' and there are situations >>> where 'model' doesn't exist always, >>> it's easy to avoid error messages: >>> >>> model? model.i : 42 >>> >>> this way you can set a default value while model is null >>> (haven't tried this yet with Qt 5.6 but I'm doing it this way in >>> BlackBerry 10 Cascades) >>> >>> ekke >>> >>> Am 01.04.16 um 16:05 schrieb Jérôme Godbout: >>> >>> Yes, but the binding loaded object internal binding are printing error, >>> since the object is created without the input, then the external binding >>> are created. They will get eventually correct, but the console will be >>> filled with error message and I try to avoid that at all cost. Here's a >>> simple example that will complain about unable to access i and j of >>> undefined / assign undefined to width and height (this example is a bit >>> stupid but just a demo to show the problems with more complex model and >>> object): >>> >>> // MyComponent.qml >>> Item >>> { >>> property var model >>> width: model.i >>> height: model.j >>> } >>> >>> // Main.qml >>> MyModel >>> { >>> id: myModel_ >>> property int i: 24 >>> property int j: 12 >>> } >>> >>> Loader >>> { >>> id: loader_ >>> source: "MyComponent.qml" >>> } >>> >>> Binding >>> { >>> target: loader_.item >>> property: 'model' >>> value: myModel_ >>> when: loader_.status == Loader.Ready >>> } >>> >>> What I would like is the Loader call QQmlComponent::beginCreate(), then >>> having a hook to init some property then the Loader can finish the >>> component QQmlComponent::completeCreate(). This way I was able to make it >>> work, but having a custom component for that is a bit annoying. >>> >>> Loader >>> { >>> source: "MyComponent.qml" >>> onInitProperty: // signal emit with component object returned by >>> beginCreate(), >>> { >>> object.model = Qt.binding(function(){ return myModel_; }); >>> ... >>> } >>> } >>> >>> That seem clean and would avoid the problems to have object into bad >>> state for a brief moment. >>> >>> Jerome >>> >>> On Fri, Apr 1, 2016 at 12:04 AM, Shantanu Tushar <shaan...@gmail.com> >>> wrote: >>> >>>> Hi, >>>> >>>> Have you tried using the QML Binding Type? >>>> <http://doc.qt.io/qt-5/qml-qtqml-binding.html> >>>> http://doc.qt.io/qt-5/qml-qtqml-binding.html >>>> >>>> On Thu, Mar 24, 2016 at 11:11 PM, Jérôme Godbout < <jer...@bodycad.com> >>>> jer...@bodycad.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> I was wondering if I am the only one who found the initial property of >>>>> a source based Loader Item a bit annoying. inline sourceComponent with >>>>> Component {} declaration are well ok on the other hand. I'm explaining >>>>> myself, when using a loader you have 2 choice to set the initial binding >>>>> on >>>>> created item: >>>>> >>>>> 1- On item changed set the binding >>>>> >>>>> *Loader* >>>>> *{* >>>>> * source: externalObj.getSrc() // return something like "myItem.qml"* >>>>> * onItemChanged:* >>>>> * {* >>>>> * if(!item) return;* >>>>> * item.myprop = Qt.binding(function(){ return myExternalProperty; >>>>> })* >>>>> * }* >>>>> *}* >>>>> >>>>> 2- use the setSource() function instead of the source directly >>>>> >>>>> *Loader* >>>>> *{* >>>>> * property url myDummySrc: externalObj.getSrc()* >>>>> * onMyDummySrcChanged:* >>>>> * {* >>>>> * setSource(myDummySrc, { 'myprop': Qt.binding(function(){ return >>>>> myExternalProperty; }) });* >>>>> * }* >>>>> *}* >>>>> >>>>> This is rather annoying and ugly. Number 1 is also having the problem >>>>> where *myItem.qml* must be able to handle *myprop *to have a default >>>>> value or being empty without output a lots of console error. Number 2 work >>>>> well and is the solution I find myself writing often. I was wondering if a >>>>> Loader that support a dictionary of initial property when source changed >>>>> would be nice: >>>>> >>>>> *Loader* >>>>> *{* >>>>> * source: externalObj.getSrc()* >>>>> * initialProperties: { 'myprop': Qt.binding(function(){ return >>>>> myExternalProperty; }) }* >>>>> *}* >>>>> >>>>> What do you think? >>>>> Jerome >>>>> >>>>> _______________________________________________ >>>>> Interest mailing list >>>>> Interest@qt-project.org >>>>> http://lists.qt-project.org/mailman/listinfo/interest >>>>> >>>>> >>>> >>>> >>>> -- >>>> Shantanu Tushar (UTC +0530) >>>> shantanu.io >>>> >>> >>> >>> >>> _______________________________________________ >>> Interest mailing >>> listInterest@qt-project.orghttp://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 >> >> >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest