#include class MyCentralWidget : public QTextEdit { public: MyCentralWidget() : QTextEdit() { setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); } }; class MyTabWidget : public QTabWidget { public: MyTabWidget() : QTabWidget() {} virtual QSize sizeHint() const { return QSize( 100, 512); } }; class MyTextEdit : public QTextEdit { public: MyTextEdit() : QTextEdit() {} virtual QSize sizeHint() const { return QSize( 256, 512); } }; class MyMainWindow : public QMainWindow { Q_OBJECT public: MyMainWindow(QWidget* parent = 0) : QMainWindow(parent) { QTabWidget* tw = new MyTabWidget; tw->addTab(new QLineEdit, "One"); tw->addTab(new QLineEdit, "Two"); tw->addTab(new QLineEdit, "Three"); tw->addTab(new QLineEdit, "Four"); tw->addTab(new QLineEdit, "Five"); QDockWidget* dw = new QDockWidget; dw->setWidget(tw); addDockWidget(Qt::LeftDockWidgetArea, dw, Qt::Horizontal); resize( 800, 600); QTimer::singleShot(5000, this, SLOT(addOtherWidgets())); } public slots: void addOtherWidgets() { setCentralWidget(new MyTextEdit); } }; #include "main.moc" int main(int argc, char **argv) { QApplication a(argc, argv); MyMainWindow mw; mw.show(); return a.exec(); }