2016-05-30 33 views
1

私はQMainWindowから継承するクラスを持っています。コンストラクタで、私はNULLCentral Widgetを設定してからのみQDockWidgetsのconsitsユーザーインターフェースを作るために、いくつかのQDockWidgetsを追加します。複数の列にQMainWindowのQDockWidgetsを配置する

UserWidget::UserWidget(QWidget * parent) : QMainWindow(parent) 
{ 
    this->setCentralWidget(NULL); 
    // create Widgets for User communication e.g. PushButtons etc. 
    // ... 
    dockWidget_ = new QDockWidget; 
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); 
    dockWidget->setWidget(userWidget_); 
    this->addDockWidget(Qt::RightDockWidgetArea); 

今、私は別のQDockWidgetを追加する代わりにQt::RightDockWidgetAreaを、私はQt::LeftDockWidgetArea選択:

をここまで
dockWidget_ = new QDockWidget; 
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); 
    dockWidget->setWidget(userWidget2_); 
    this->addDockWidget(Qt::LeftDockWidgetArea); 

は、私のプログラムの外観は次のようになります。

enter image description here

QDockWidgetを追加することで、さらに進んで:

dockWidget_ = new QDockWidget; 
    dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); 
    dockWidget->setWidget(userWidget3_); 
    this->addDockWidget(Qt::LeftDockWidgetArea /* or Qt::RightDockWidgetArea*/); 

私は途中で分割さエリアのいずれかで終わる:

enter image description here

しかし、私は3列にレイアウトを分割したいです同様に、

enter image description here

しかし、これを行うには適切な方法が見つかりませんでした。領域をQt::TopDockWidgetAreaまたはQt::BottomDockWidgetAreaに設定すると、望ましい動作が得られません。私は本当にここで何か助けていただければ幸いです。

答えて

3

あなただけの機能splitDockWidget()使用する必要があります:あなたのケースでは

void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation) 

を、あなたは右(dock2dock3)上の左と他の二つの上(のはdock1彼を呼びましょう)1 QDockWidgetを置くことができますこのような関数を呼び出す:

splitDockWidget(dock2, dock3, Qt::Horizontal); 
関連する問題