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@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to