dock mdi subwindow?



  • does anybody know how to dock a mdi subwindow and set its dockable areas?

    #include <QtGui>
    #include <QBrush>
    #include <QMdiSubWindow>
    
    #include "ui_mainwindow.h"
    #include "mainwindow.h"
    #include "propertiesform.h"
    #include "screenform.h"
    
    
    MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        ui->mdiArea->setBackground(QBrush(QColor(0,0,0,0)));
        setCentralWidget(ui->mdiArea);
    
        propertyWindow = loadSubWindow(new PropertiesForm(this));
        screenWindow = loadSubWindow(new ScreenForm(this));
    
        showSubWindow(propertyWindow);
        //some way to dock the window on the right?
    
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_actionClose_triggered()
    {
        this->close();
    
    }
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // ToolBar
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    void MainWindow::on_actionScreen_triggered()
    {
        showSubWindow(screenWindow);
    }
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Loading Functions
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    QMdiSubWindow *MainWindow::loadSubWindow(QWidget *widget)
    {
        auto window = ui->mdiArea->addSubWindow(widget);
        window->setWindowTitle(widget->windowTitle());
        window->setWindowIcon(widget->windowIcon());
        window->hide();
        //window->setWindowFlags(Qt::FramelessWindowHint);
        return window;
    }
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Showing Functions
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    void MainWindow::showSubWindow(QMdiSubWindow *subwindow)
    {
        if(!subwindow->isVisible()) subwindow->show();
        else subwindow->hide();
    }
    
    
    

  • Lifetime Qt Champion

    Hi,

    Aren't you mixing two different concepts ?

    QMdiSubWindow and QDockWidget serve two different purposes.


Log in to reply