Estoy intentando crear varias ventanas en una cadena: la ventana 1 es la ventana principal de la ventana 2, la ventana 2 es la ventana principal de la ventana 3, etc. Cuando cierro una ventana, me gustaría que todos sus elementos secundarios se cierren también. Actualmente, si cierro la ventana del nivel superior, todos los demás se cierran, como se esperaba, pero al cerrar, por ejemplo, la ventana 2, solo cierra la ventana 2, no la ventana 3, etc. ¿Cómo debería estar haciendo esto? ¡Gracias por tu ayuda!Qt: ¿Varias ventanas en una cadena padre/hijo, padre no cierra hijos?
main_window.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
QPushButton* button = new QPushButton("Open 1", this);
connect(button, SIGNAL(clicked()), this, SLOT(on_button_clicked()));
}
void MainWindow::on_button_clicked() {
window1 *w = new window1(this);
w->show();
}
window1.cpp
window1::window1(QWidget *parent) : QWidget(parent)
{
this->setWindowFlags(Qt::Window); // in order to have a free-standing window
QPushButton* button = new QPushButton("Open 2", this);
connect(button, SIGNAL(clicked()), this, SLOT(on_button_clicked()));
}
void window1::on_button_clicked() {
window2 *w = new window2(this);
w->show();
}
window2.cpp
window2::window2(QWidget *parent) : QWidget(parent)
{
this->setWindowFlags(Qt::Window);
QLabel* label = new QLabel("Window 2", this);
}
¡Eso fue lo que hizo! Agregar "w-> setAttribute (Qt :: WA_DeleteOnClose);" en mainwindow.cpp arriba trabajado. Me alegro de no tener que volver a implementar el evento close. ¡Gracias! – ishmael
No sabía que el widget no se elimina al cerrar por defecto. Esto es útil. De alguna manera, establecer el atributo de la ventana en WA_DeleteOnClose para mi ventana PySide resolvió un problema de falla de segmentación. Ahora solo necesito descubrir por qué ... – lightalchemist