[Interest] Update widget geometry BEFORE window shown
David M. Cotter
dave at kjams.com
Fri May 24 21:14:07 CEST 2024
I’ve tried everything I can think of. The ONLY one that works the way I NEED is the first one, but that one flashes the window on the screen
#if 1
qWidgetP->show();
qWidgetP->hide();
QtLetTimersFire(0);
#endif
#if 0
QLayout* layoutP(qWidgetP->layout());
layoutP->update();
layoutP->activate();
QtLetTimersFire(0);
#endif
#if 0
for (auto* childP: qWidgetP->findChildren<QWidget*>()) {
childP->updateGeometry();
}
qWidgetP->updateGeometry();
QtLetTimersFire(0);
#endif
#if 0
qWidgetP->setAttribute(Qt::WA_DontShowOnScreen, true);
qWidgetP->show();
// qWidgetP->layout()->invalidate();
// qWidgetP->layout()->update();
// qWidgetP->layout()->activate();
qWidgetP->hide();
qWidgetP->setAttribute(Qt::WA_DontShowOnScreen, false);
QtLetTimersFire(0);
#endif
#if 0
qWidgetP->setAttribute(Qt::WA_DontShowOnScreen, true);
qWidgetP->show();
qWidgetP->layout()->invalidate();
qWidgetP->layout()->update();
qWidgetP->layout()->activate();
for (auto* childP: qWidgetP->findChildren<QWidget*>()) {
childP->updateGeometry();
}
qWidgetP->updateGeometry();
qWidgetP->hide();
qWidgetP->setAttribute(Qt::WA_DontShowOnScreen, false);
QtLetTimersFire(0);
#endif
> On May 24, 2024, at 12:47 AM, coroberti <coroberti at gmail.com> wrote:
>
> David,
> Try
> yourWidget->layout()->update();
> yourWidget->layout()->activate();
>
> If not,
> let the event loop to run, ie. arranging a short timer.
>
> Kind regards,
> Robert Iakobashvili
> ............................
>
> On Fri, May 24, 2024 at 1:53 AM David M. Cotter <dave at kjams.com> wrote:
>>
>> I need to do something like this:
>>
>> windowP->layout()->updateGeometry(); // causes all widget geometry to update
>> DoSomethingImportant(windowP->GetWidget(“someWidget”).geometry()); // do something with the geometry of a widget (which must be up to date)
>> windowP->setGeometry(windowP->GetInitialGeometry()); // pos/size now based on the fact that we KNOW the geometry of one of the widgets BEFORE the window is shown
>> windowP->show(); // only NOW show the window, NOT before now
>>
>> How do I do something like the first line? Cause all widget geometry (Recursively), to know / figure out its size AND position? And this BEFORE the window or any widget is “shown” via the windowP->show() command?
>>
>> Please don’t try to tell me to do it differently. If you don’ know how to answer it, please don’t chime in, thanks.
>>
>> -Dave
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org
>> https://lists.qt-project.org/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20240524/e0725ab5/attachment.htm>
More information about the Interest
mailing list