#include <QDockWidget>
#include <QBoxLayout>
#include <QMainWindow>
#include <QApplication>

class MainWindow
        : public QMainWindow
{
    Q_OBJECT

private slots:
    void floatingChanged(bool floating)
    {
        if( floating )
            static_cast<QDockWidget*>(QObject::sender())->showFullScreen();
    }

public:
    MainWindow()
        : QMainWindow()
    {
        QWidget* central = new QWidget();
        central->setLayout(new QBoxLayout(QBoxLayout::TopToBottom));
        this->setCentralWidget(central);
        QDockWidget* dockwidget = new QDockWidget(this);
        this->centralWidget()->layout()->addWidget(dockwidget);

        QObject::connect(dockwidget, SIGNAL(topLevelChanged(bool)), this, SLOT(floatingChanged(bool)));
    }
};

int main(int argc, char** argv)
{
    QApplication app(argc, argv);

    QMainWindow* window = new MainWindow;
    window->show();

    return app.exec();
}
