#include #include #include #include enum EPane { PANE_TOP , PANE_BOTTOM , COUNT_PANE }; void InitMainWindow(QMainWindow* pMainWindow) { pMainWindow->show(); pMainWindow->setWindowTitle("main window"); pMainWindow->setDockNestingEnabled(true); } void InitDockWidgets(QMainWindow* pMainWindow, QDockWidget* paDockWidget) { for (int i=0; i < COUNT_PANE; ++i) { QDockWidget* const p = paDockWidget + i; p->setParent(pMainWindow); p->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetVerticalTitleBar); p->setAutoFillBackground(true); p->activateWindow(); } } void SetDockWidget(QMainWindow* pMainWindow, QDockWidget* p, Qt::DockWidgetArea dockArea, const char* pTitle, int iRed, int iGreen, int iBlue) { pMainWindow->addDockWidget(dockArea, p); p->setWindowTitle(pTitle); QPalette pal = p->palette(); QColor color; pal.setBrush(QPalette::Window, color.fromRgb(iRed,iGreen,iBlue)); p->setPalette(pal); p->show(); } int main(int argc, char* argv[]) { QApplication app(argc, argv); QMainWindow mainwin; QDockWidget aWidgets[COUNT_PANE]; InitMainWindow(&mainwin); InitDockWidgets(&mainwin, aWidgets); SetDockWidget(&mainwin, aWidgets + PANE_TOP, Qt::TopDockWidgetArea, "top", 128,255,255); SetDockWidget(&mainwin, aWidgets + PANE_BOTTOM, Qt::BottomDockWidgetArea, "bottom", 255,128,255); return app.exec(); }