//#include #include class MyMainWindow : public QMainWindow { Q_OBJECT int number; public slots: void newSubWindow (); public: MyMainWindow (QWidget* parent =0); }; MyMainWindow::MyMainWindow (QWidget* parent) : QMainWindow (parent), number (0) { QMdiArea* const mdi=new QMdiArea (this); mdi->setActivationOrder (QMdiArea::StackingOrder); setCentralWidget (mdi); menuBar()->addAction ("&New Subwindow", this, SLOT (newSubWindow())); resize (840, 220); } class MyWidget : public QWidget { public: MyWidget (int number, QWidget* parent =0); QSize minimumSizeHint () const; }; MyWidget::MyWidget (int number, QWidget* parent) : QWidget (parent) { setWindowTitle (QString::number (number)); QVBoxLayout *layout = new QVBoxLayout; setLayout(layout); for (int i=0; i<5; ++i) { QLineEdit* le=new QLineEdit (this); //le->move (20, i*20 +20); le->setText (QString::number (i)); if(i==2){ setFocusProxy(le); qDebug()<<"setting focus"; } layout->addWidget(le); //le->show (); } } QSize MyWidget::minimumSizeHint () const { return QSize (200, 150); } void MyMainWindow::newSubWindow () { if ( QMdiArea* const mdi=qobject_cast (centralWidget()) ) { QWidget* const w=new MyWidget (number, 0); mdi->addSubWindow (w); w->show (); } ++number; } int main (int argc, char* argv[]) { QApplication a (argc, argv); MyMainWindow m; m.show(); return a.exec(); } #include "main.moc"