#include class SomeMainWindow : public QMainWindow { using QMainWindow::QMainWindow; void closeEvent(QCloseEvent *) override { qDebug() << "closeEvent"; } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); SomeMainWindow w; QMenu *menu = new QMenu("File"); w.menuBar()->addMenu(menu); QAction *action = menu->addAction("Action 1"); w.connect(action, &QAction::triggered, &w, []() { qDebug() << "Action triggered"; }); w.setGeometry(100, 100, 150, 150); w.setCentralWidget(new QLabel(QString("Main Window - Qt %1").arg(qVersion()))); w.show(); QDialog *d1 = new QDialog(&w, Qt::Window | Qt::WindowTitleHint); QVBoxLayout *vbox1 = new QVBoxLayout(d1); vbox1->addWidget(new QLabel("Dialog d1")); vbox1->addStretch(1); d1->setWindowTitle("Window 1"); d1->setGeometry(250, 250, 300, 300); d1->show(); QDialog *d2 = new QDialog(d1, Qt::Window | Qt::WindowTitleHint); QVBoxLayout *vbox2 = new QVBoxLayout(d2); vbox2->addWidget(new QLabel("Dialog d2")); vbox2->addStretch(1); d2->setWindowTitle("Window 2"); QPushButton *okbtn = new QPushButton("Ok"); vbox2->addWidget(okbtn); d2->connect(okbtn, &QPushButton::clicked, d2, &QDialog::accept); d2->setGeometry(500, 500, 200, 200); d2->setWindowModality(Qt::WindowModal); d2->exec(); int res = a.exec(); return res; }