[Development] New class for QtWidgets: ColumnResizer

Aurélien Gâteau agateau at kde.org
Fri Jun 13 10:39:34 CEST 2014


Oswald Buddenhagen wrote:

> On Thu, Jun 12, 2014 at 04:08:17PM +0200, Aurélien Gâteau wrote:
>> Olivier Goffart wrote:
>> > But just wondering if it would not be better to have that as an API
>> > within QGridLayout such as
>> >   QGridLayout::setAlignedWith(QGridLayout*)
>> 
>> The class works with QFormLayout as well, so I don't think moving the
>> feature into QGridLayout would be a good idea.
>> 
> they have a common base class, you know ...
> 
>   QLayout::linkDimension(QLayout *other, Qt::Orientation orientation =
>   Qt::Horizontal)
> 
> (the second parameter is actually a flag field).
> 
> and for more fine-grained control one could consider (not sure this makes
> sense):
> 
>   QLayoutItem::linkDimension(QLayoutItem *other, Qt::Orientation
>   orientation = Qt::Horizontal)

What is missing from what you propose is the notion of column or row: 
ColumnResizer lets you limit resizing to one column only so for example if 
you have two 3-columns QGridLayouts stacked on top of each other then you 
can link the first column widths while leaving each layout decide how they 
want to size the 2 other columns.

What about this instead?

    QLayout::linkDimension(QLayout *other, int index, Qt::Orientation 
orientation = Qt::Vertical);

> but then, i wonder whether you are fixing the right problem to start
> with. usually, one would create a big master layout, and embed
> sublayouts spanning multiple cells in the areas that are not supposed to
> be contrained by the grid.

As Eike pointed out: using a big grid means you have to give up on group 
boxes.

Aurélien




More information about the Development mailing list