[Development] Property bindings in Qt 6
Uwe.Rathmann at tigertal.de
Wed Oct 2 18:25:53 CEST 2019
On 10/2/19 5:19 PM, Pierre-Yves Siret wrote:
> While using layouts in the Qt Quick world, you use Layout attached
> properties to give hints to the layout system :
Sure it is a subset of the options you have with the corresponding
layouts of the widgets world.
It is possible to set the explicit min/preferred/max hints, but of
course the implicit hints can't be done this way. And as dynamic
constraints ( heightForWidth/widthForHeight ) are always implicit, these
layouts do not support them.
In case anyone is interested: I wrote a small demo (
https://github.com/uwerat/qskinny/tree/master/playground/grids ) that
shows side by side, what the different grid layout implementations are
doing, when being fed with same attributes. It is interesting how many
obvious differences/bugs you find - even in QGridLayout, that has a
history of > 15 years.
I decided not to write bug reports ( explanations are in the code ), as
I don't expect anyone fixing them. The QGraphicsWidget stuff has become
obsolete ( why is this not already deprecated ? ) and probably nobody
wants to touch the widgets layouts - even if it is actually a bug fix.
Qt/Quick layouts are only a thin layer on top of the graphics view
layout engine and could be reimplemented from scratch in 2-3 days - in
case someone wants to do it.
> I don't understand/visualize what you mean.
Classic layouting usually means stacking of box/grid layouts. Each box
makes use of the information of the child boxes - actually child boxes
are not different than basic controls.
So it is important, that each box offers the same min/pref/max hints to
its parent box - and of course these values should be calculated
automatically. F.e when having a horizontal linear layout, the preferred
width of the layout can easily calculated by adding the preferred widths
of the children.
The graphics view layout system is the most complete implementation. F.e
have a look at: https://doc.qt.io/qt-5/qgraphicslayoutitem.html#sizeHint
This method does not only calculates the accumulated pref/min/max values
it can also be fed with a constraint: when one of its width/height is >=
0 a heightForWidth/widthForHeight calculation is performed.
So whenever you have to do layout calculations you can rely on having
these information from your children.
More information about the Development