[Development] QProperty and when evaluation occurs

Arno Rehn a.rehn at menlosystems.com
Thu Jul 23 22:08:05 CEST 2020

Hi Brett,

Am 23.07.2020 um 15:56 schrieb Stottlemyer, Brett (B.S.):
> I'm still trying to wrap my head around this concept, and starting a new 
> thread to distinguish from the technical implementation discussion.
> The two obvious cases:
> * Immediate evaluation.  This is the current signal-based handling 
> (ignoring queued for the moment).
> * Evaluate-on-Read (EoR).  True lazy evaluation, where computations 
> would never be made if no one asks.  Kind of the opposite of CoW.
> EoR, though, seems not too useful in many cases; it seems to shift 
> backwards towards polling.  I expect Qt's HMI technologies (Widgets, 
> QML, 3D) to have to shift(?) to the third case:
> * Render evaluation.  When the render runs (nominally 30 or 60 frames 
> per second), all "dirty" elements are evaluated, and the dirty flag is 
> cleared.  In this case, the evaluation is lazy, but the task of figuring 
> out when to evaluate is handled by the renderer, not passed on to the user.

I think much of the confusion stems from the fact that you can get 
notifications (i.e. callbacks) without evaluating the whole binding.
 From what I grok from the code, you can subscribe to "dirty" flag 
changes with onValueChanged/subscribe - but this does not evaluate the 
property binding. Evaluation is only done when your handler routine 
actually requests the property value.
(Note that in that case "onValueChanged" might be a misnomer - the value 
might not have actually changed, even though a changed dependency has 
lead to it being flagged dirty).

If the goal is, however, to really get rid of all the ways to get 
notified about (possibly) changed properties, then this system is 
defective IMHO. Constant-rate polling with a timer might be a good 
solution for *some* problems, but it leads to absolutely abysimal 
performance in others (or many wasted resources). But I don't think this 
is what is proposed.

Anyone with more knowledge: please correct me if I'm wrong.


Arno Rehn
Tel +49 89 189 166 0
Fax +49 89 189 166 111
a.rehn at menlosystems.com

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

More information about the Development mailing list