Hi Fabian,

Am 10.06.2024 um 16:37 schrieb Fabian Kosmale:
there has been no further development on making
QObjectBindableProperty public, or much work at all when it comes to
extending bindable properties and their usage inside Qt. The most
substantial feature was an external contribution to support QBindable
from non-QProperty based properties, as long as they have a change
signal (https://doc.qt.io/qt-6/qbindable.html#QBindable-3).

Yep, we're also using this in a few places already. But it's a little
more cumbersome to use. I also assume it's slower, not least because of
the string-based lookup on construction.

The main reason why QObjectBindableProperty was never made public is
that it is rather easy to shoot oneself in the foot with it, as we
discovered in quite a few places inside Qt itself.

I've found the issues on Jira [0]. From what I gather the API and usage patterns have changed a little bit over time. By now the pattern seems to be stable and pretty much identical to "old-style" property setters:

    // From QTimeLine:
    d->duration.removeBindingUnlessInWrapper();
    if (duration != d->duration.valueBypassingBindings()) {
        d->duration.setValueBypassingBindings(duration);
        d->duration.notify();
    }

Looks pretty much like the typical property setter with the addition of a call to removeBindingUnlessInWrapper().

Are there actually any footguns left?

[0] https://bugreports.qt.io/browse/QTBUG-89890?jql=text%20~%20%22Q_OBJECT_COMPAT__PROPERTY%22

I think it might be a good idea to have a discussion at Contributor
summit where we can talk about the past, present and future of
QProperty. I've added it to this year's s program proposal (at https://wiki.qt.io/Qt_Contributor_Summit_2024_-_Program)

Thanks! Would love to discuss this in person, but I won't be able to make it to QtCS this year :-(

-- Arno

Von: Development
<development-boun...@qt-project.org> im Auftrag von Arno Rehn
<a.r...@menlosystems.com> Gesendet: Montag, 10. Juni 2024 12:48 An:
Qt development mailing list Betreff: [Development] Making
Q_OBJECT_COMPAT_PROPERTY public

Hey everyone,

in our codebase, we have a lot of property setters with
side-effects. We'd still like to introduce bindable properties -
they're awesome!

However, QObjectBindableProperty/QProperty require trivial setters,
so that doesn't work for us. Qt uses Q_OBJECT_COMPAT_PROPERTY
internally for setters-with-side-effects, but that is private API as
of now.

I've found notes from Qt CS 2021 indicating that this could be made public in the future [0]. Has there been any development in this direction? If not, is there anything that's blocking this?

Regards, Arno

[0]: https://wiki.qt.io/QtCS2021_-_Qt_Property_Bindings

-- Arno Rehn Principal Software Engineer Tel +49 89 189 166 0 Fax +49
89 189 166 111 a.r...@menlosystems.com www.menlosystems.com

Menlo Systems GmbH Bunsenstrasse 5, D-82152 Martinsried, Germany Amtsgericht München HRB 138145 Geschäftsführung: Dr. Michael Mei, Dr.
Ronald Holzwarth USt.-IdNr. DE217772017, St.-Nr. 14316170324

-- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development

--
Arno Rehn
Principal Software Engineer
Tel +49 89 189 166 0
Fax +49 89 189 166 111
a.r...@menlosystems.com
www.menlosystems.com

Menlo Systems GmbH
Bunsenstrasse 5, D-82152 Martinsried, Germany
Amtsgericht München HRB 138145
Geschäftsführung: Dr. Michael Mei, Dr. Ronald Holzwarth
USt.-IdNr. DE217772017, St.-Nr. 14316170324

--
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to