ich habe folgendes Problem: Ich habe ein Gridlayout mit zwei Reihen. In der ersten Reihe befinden sich Widgets, die permanent angezeigt werden. Die Widgets in der zweiten Reihe sind standardmäßig ausgeblendet und werden nur eingeblendet, wenn ein Widget der ersten Reihe einen bestimmten Wert hat.
|id|name |nachname| // erste Reihe
| |spitzname| | // zweite Reihe
Wenn ich ein Widget mit show() einblende, vergrößert sich das Fenster automatisch. Ich möchte nun gerne, dass sich die Fenstergröße wieder verkleinert, wenn ich hide() aufrufe (also das die zweite Reihe komplett ausgeblendet wird).
Bisher verwende ich einen Workaround: Vor dem Aufruf von show() merke ich mir die Höhe. Nach dem Aufruf von hide() setze ich dann mit resize() die alte Fenstergröße zurück.
Ich habe schon versucht, durch setzen einer sizePolicy (maximum) einen Automatismus zu verwenden, leider ohne Erfolg.
Dies ist mein Code:
Code: Alles auswählen
void Test::showColumnWidget(QWidget *widget)
{
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
if(0 == myNumberOfShowedSpecialFields)
myStandardSize = QSize(size().width(), minimumHeight());
++myNumberOfShowedSpecialFields;
widget->show();
widget->setEnabled(true);
adjustSize();
}
void Test::hideColumnWidget(QWidget *widget)
{
widget->hide();
widget->setEnabled(false);
--myNumberOfShowedSpecialFields;
if(0 == myNumberOfShowedSpecialFields)
{
setMinimumSize(myStandardSize);
this->resize(myStandardSize);
}
}
Vielen Dank,
Harald