[Interest] geometry() for a widget that hasn't been shown

Jan Dasselaar jan at altus-escon.com
Tue Sep 22 13:31:35 CEST 2015


Hello John,

Maybe the QWidget::adjustSize() function is what you are looking for.
I think after calling adjustSize() the geometry() function should give a 
up to date result.

Hth,
Jan

On 21-9-2015 19:33, John Weeks wrote:
> If this is a repeat, my apologies. I can't tell if I saw this arrive on the list!
>
>
>
> In general a QWidget that hasn't been made visible yet gives bogus results for QWidget::geometry(). Qt only guarantees that a call to setGeometry() will result in a Resize event when the window is made visible. But we often need to ask a window or child widget how big it is before it is made visible in order to do various kinds of calculations. These calculations are sometimes used for things that preclude waiting for the window to become visible.
>
> Is there a way to force the Resize events (and all the layout calculation machinery that goes with it) before it is visible? Using Qt 5.5, I see that if you call QWidget::grab(), it will call a static function sendResizeEvents() that does exactly what I want:
>
> QPixmap QWidget::grab(const QRect &rectangle)
> {
>     Q_D(QWidget);
>     if (testAttribute(Qt::WA_PendingResizeEvent) || !testAttribute(Qt::WA_WState_Created))
>         sendResizeEvents(this);
>
> Is there some other way to get this to happen? I suppose I could just call grab() and throw away the QPixmap, but that seems like an awful kludge...
>
> -John Weeks
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>




More information about the Interest mailing list