[Development] New class for QtWidgets: ColumnResizer

Aurélien Gâteau agateau at kde.org
Tue Jun 17 15:21:17 CEST 2014


Saether Jan-Arve wrote:

> Hi
> 
> I would really like to welcome the feature you present here, but I can see
> that your idea has some caveats (some are sensible restrictions though),
> but the API doesn't give any indication of that.
> 
> The main caveats are:
> 
> 1. The implementation is limited to the first column of a layout, since it
> doesn't take the columns before the chosen column into account. Supporting
> other columns would require a bigger effort with the current approach.

It does support multiple columns: you can pass the column number to 
addWidgetsFromLayout().

> 2.
> It assumes that the layouts are all aligned on their left edge, so for
> instance if one layout has a QGroupBox as a parent, and another one has a
> QStackedWidget as a parent (they can potentially have different
> contentsMargins), the items might end up not being properly aligned
> afterall.

True. But I would not trust code to adjust margins behind the developer back 
so that things line up. ColumnResizer offers you a way to align things, but 
you have to understand what it does.

> 3. It seems to change the size hint of QFormLayout, but not for
> QGridLayout. This is inconsistent.

It changes the size hint of items within QFormLayout, which was the only way 
I found to make it work because QFormLayout does not have the equivalent of 
QGridLayout::setColumnMinimumWidth(). Maybe such an equivalent could be 
added?

> With the above caveats in mind, I am therefore wondering if it isn't a
> better API to either strictly limit it to QGroupBox+QFormLayout
> hierarchies or create a separate QWidget subclass that ensures this.
> 
> With such tighter requirement on the input I think the API would reflect
> much better the functionality it actually offers, and expose less
> surprises to the user.

I am not sure what such an API would look like, can you share more details?

Aurélien




More information about the Development mailing list