Hola eferion...había probado varias cosas siempre orientadas a fijar a mano el tamaño del widget y no funcionaba. Al final buscando por donde me has dicho ya me sale.
Esta es mi modificación sobre el ejercicio del ejemplo:
añado un miembro bool a la clase:
Añado un slot:
Código C++:
Ver originalpublic slots:
void OcultarMostrar();
En el constructor conecto el botón de mostrar/ocultar al slot que he creado, y no al slot del widget que tiene la extensión. También pongo el tamaño "fixed", que es donde está la clave (gracias de nuevo!!) :
Código C++:
Ver originalconnect(moreButton, SIGNAL(toggled(bool)), this, SLOT(OcultarMostrar()));
layout()->setSizeConstraint(QLayout::SetFixedSize );
Y finalmente esta es la implementación del slot:
Código C++:
Ver originalvoid Extension::OcultarMostrar()
{
visible = !visible;
if (visible)
{
//extension->setVisible(visible);
moreButton->setText(tr("Menos"));
extension->show();
}
else
{
//extension->setVisible(visible);
moreButton->setText(tr("Mas"));
extension->hide();
}
}
Aquí me entra una duda. La ayuda de qt ya dice que el método
setExtension(QWidget*) que nombro en el primer post ya está marcado como en desuso. En su lugar recomiendan simplemente hacer uso del método show()/hide().
Sin embargo en el ejemplo hacen uso del método
setVisible(bool)
En todo caso, ambas formas funcionan. ¿Sabes si hay alguna razón para usar una u otra?
Gracias, como siempre!!