[Interest] Qml Loader initial property setter
ekke
ekke at ekkes-corner.org
Sun Apr 3 17:10:49 CEST 2016
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 <shaan7in at gmail.com
> <mailto:shaan7in at gmail.com>> wrote:
>
> Hi,
>
> Have you tried using the QML Binding Type?
> http://doc.qt.io/qt-5/qml-qtqml-binding.html
>
> On Thu, Mar 24, 2016 at 11:11 PM, Jérôme Godbout
> <jerome at bodycad.com <mailto:jerome at 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 at qt-project.org <mailto:Interest at qt-project.org>
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
>
>
> --
> Shantanu Tushar (UTC +0530)
> shantanu.io <http://shantanu.io>
>
>
>
>
> _______________________________________________
> 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/20160403/6299c142/attachment.html>
More information about the Interest
mailing list