Estoy creando una aplicación en Qt que permite a los usuarios arrastrar varios "módulos" en un QGraphicsView. Cada vez que se selecciona uno de estos módulos, que emite una señal que luego se recogió por un "ConfigurationWidget" que es un lado del panel que debe mostrar todos los parámetros relevantes del módulo seleccionado:Limpiar un diseño en Qt
class ConfigurationWidget : public QWidget
{
Q_OBJECT
public:
ConfigurationWidget(QWidget *parent) : QWidget(parent) {}
public slots:
void moduleSelected(Module* m)
{
if(layout())
{
while (itsLayout->count()>0)
{
delete itsLayout->takeAt(0);
}
}
delete layout();
itsLayout = new QFormLayout(this);
itsLayout->addRow(QString(tr("Type:")), new QLabel(m->name()));
itsLayout->addRow(QString(tr("Instance:")), new QLabel(m->instanceID()));
// ... Display a whole bunch of other fields that depends on the module
}
};
El problema es que ConfigurationWidget nunca se borra cuando se selecciona un módulo. Los nuevos campos se dibujan sobre los antiguos. He intentado varias combinaciones de hide() y show(), invalidate(), update(), etc. en vano.
¿Cuál es la forma correcta de hacer un widget que puede cambiar sus campos de esta manera sobre la marcha?
Debe utilizar un QStackedWidget – armonge