Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/04/2016, 11:18
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Qt. Extender diálogos

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:

Código C++:
Ver original
  1. bool visible;

Añado un slot:
Código C++:
Ver original
  1. public slots:
  2.         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 original
  1. connect(moreButton, SIGNAL(toggled(bool)), this, SLOT(OcultarMostrar()));
  2. layout()->setSizeConstraint(QLayout::SetFixedSize );

Y finalmente esta es la implementación del slot:

Código C++:
Ver original
  1. void Extension::OcultarMostrar()
  2. {
  3.     visible = !visible;
  4.  
  5.     if (visible)
  6.     {
  7.         //extension->setVisible(visible);
  8.         moreButton->setText(tr("Menos"));
  9.         extension->show();
  10.     }
  11.     else
  12.     {
  13.         //extension->setVisible(visible);
  14.         moreButton->setText(tr("Mas"));
  15.         extension->hide();
  16.     }
  17. }

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!!
__________________
Mi calculadora en Qt