Bueno, a ver si consigo describir el problema de forma mas efectiva que en el título:
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)
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 originalDatos::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 originalif (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 originalDatos::~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!