void BaseForm::Quit(){ delete window; close(); }
#ifndef MAINFORM_H#define MAINFORM_H#include "ui_mainform.h" class BaseForm : public QMainWindow { Q_OBJECT public: BaseForm(QWidget *parent =0); private slots: void Quit(); void Test(); private: Ui::MainWindow form; QMainWindow *window; };#endif
BaseForm::BaseForm(QWidget *parent): QMainWindow(parent) { form.setupUi(this); window=0; // conections ...... QObject::connect(form.pushButton, SIGNAL(clicked()), this, SLOT(Quit())); QObject::connect(form.pushButton_2, SIGNAL(clicked()), this, SLOT(Test())); }void BaseForm::Test(){ if(!window) { window= new QMainWindow (this); } window->show(); window>activateWindow();}void BaseForm::Quit(){ delete window; //<<<<<<<<<----если этого не делать то это дочернее окно не умирает после закрытия главной формы предка!!! close(); }
int main(int argc, char *argv[]){ QApplication app(argc, argv); BaseForm *w = new BaseForm; // window->setAttribute(Qt::WA_DeleteOnClose); <<<<< ---- так тоже пробовал w->show(); app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); return app.exec();}