[Qt-interest] Modal QDialog inside QMdiArea

Nesbitt brak at brak.pl
Sun Feb 8 23:59:19 CET 2009


Hi

I am trying to use modal (Qt::WindowModal) QDialog inside QMdiArea and it
doesn't work.
Here is example code:

#include <QApplication>
#include <QtGui>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow mainWin;
 
    QMdiArea* area = new QMdiArea();
    mainWin.setCentralWidget(area);
     
    //window 1
    QWidget* w = new QWidget();
    w->setWindowTitle("w");
 
    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(new QLineEdit());
    layout->addWidget(new QTextEdit());
    layout->addWidget(new QPushButton("B1"));
    w->setLayout(layout);
 
    area->addSubWindow(w);
        
    //window 2
    QWidget* w2 = new QWidget();
    w2->setWindowTitle("w2");
 
    QVBoxLayout* layout2 = new QVBoxLayout();
    layout2->addWidget(new QLineEdit());
    layout2->addWidget(new QTextEdit());
    layout2->addWidget(new QPushButton("B2"));
    w2->setLayout(layout2);
 
    QMdiSubWindow* sw2 = area->addSubWindow(w2);
     
    mainWin.show();
 
    //dialog
    QDialog d(sw2);// block window 2
    d.setWindowTitle("d");
    d.setWindowModality(Qt::WindowModal);
 
    QVBoxLayout* layout3 = new QVBoxLayout();
    layout3->addWidget(new QLineEdit());
    layout3->addWidget(new QLineEdit());
    layout3->addWidget(new QPushButton("B3"));
    d.setLayout(layout3);
 
    area->addSubWindow(&d);
    d.exec();
     
    return app.exec();
}

Dialog should block window 2, but it doesn't block anything. It looks like
ordinary window.

What is the correct way to do this?

Thank you. 




More information about the Qt-interest-old mailing list