Tengo un QMainWindow que en el centro tiene un Widget en blanco. Este está creado en el Designer.
El contenido del Widget está en una clase aparte, y la composición está creada a mano.
La idea es: (no sé si aquí ya estaré empezando a pifiarla)
Tengo un puntero a la clase donde está contenida la información del contenido (y la lógica y demás)
Código C++:
Ver original
Datos* datos;
En el constructor, se desarrollan todos los widgets y demás, quedando un layout externo que engloba todo el tinglado, y que queda ligado al widget vacío del QMainWindow.
Código C++:
Ver original
Datos::Datos (QWidget *parent):QWidget(parent) { //toda la composición y demás cosas del constructor mainLayout= new QVBoxLayout(parent); //el layout exterior }
Y ahora la llamada desde QMainWindow:
Código C++:
Ver original
if (Contenido) { delete Contenido; } Contenido= new Datos(ui->Lienzo); //el widget en blanco creado en el designer
El problema que tengo, y esta es la duda...probablemente mas de mal aprendiz de C++ que otra cosa es:
Si en la clase datos borro de forma explícita el lienzo exterior:
Código C++:
Ver original
Datos::~Datos() { -------------- delete mainLayout; ----------------
El programa falla, entiendo que porque estoy intentando borrar dos veces el mainLayout.
Pero si no lo borro de manera expresa, cuando abro un fichero y luego quiero abrir otro, el programa me lanza un error diciendo que no puede añadir otro layout a ui->Lienzo porque ya hay uno existente.
En fin, ya sé que es un poco jaleoso lo que describo, pero como siempre, toda ayuda será bien recibida. Yo mientras voy a pegarme otro rato con esto, a ver si encuentro la solución
Saludos y gracias!