2011-12-30 12 views
7

QGridLayoutにはQSplitterがあります。その中でQSplitter私はスプリッタを左から右にスプリッタを動かすことができる2つの要素があります。さて、そこには問題ありません。しかし、私は別のスプリッターを追加したいが、それは下に移動します。 (私は画像で説明します。)Qt - スプリッタを水平方向と垂直方向に同時に作成する

split window with two boxes atop a single wide box

は、だから、ほとんどが2つのスプリッタ、アップツー下に移動すると、左右およびその他の動くものを持っています。

ご理解いただきますようお願い申し上げます。ここで

QGridLayout *layout = new QGridLayout(this); 
QSplitter *splitter = new QSplitter(); 
text1 = new QPlainTextEdit(); 
text2 = new QPlainTextEdit(); 
splitter->addWidget(text1); 
splitter->addWidget(text2); 
text1->resize(800, this->height()); 
layout->addWidget(splitter, 1, 0); 
browser = new QTextBrowser(); 
browser->resize(1, 1); 
layout->addWidget(browser, 2, 0); 
setLayout(layout); 

私は2番目のいずれかの操作を実行する方法がわからないので、唯一の1スプリッタを追加します。

+0

あなたの 'QGridLayout'をビルドしてスプリッタを追加するソースコードを追加できますか? – sarnold

+0

@sarnold:最初の投稿が編集されました。 – Kazuma

答えて

15

あなたはこれをあなたのニーズに合わせて簡単に調整できます。コンセプトは、最初の2つの要素のコンテナを作成し、3つ目の要素すべてをスプリッタを介してコンテナに接続することです。

#include <QtGui> 

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

    QWidget wnd; 

    QTextEdit *editor1 = new QTextEdit; 
    QTextEdit *editor2 = new QTextEdit; 
    QTextEdit *editor3 = new QTextEdit; 

    QSplitter *split1 = new QSplitter; 
    QSplitter *split2 = new QSplitter; 

    QVBoxLayout *layout = new QVBoxLayout; 

    QWidget *container = new QWidget; 
    QVBoxLayout *container_layout = new QVBoxLayout; 

    split1->addWidget(editor1); 
    split1->addWidget(editor2); 

    container_layout->addWidget(split1); 
    container->setLayout(container_layout); 

    split2->setOrientation(Qt::Vertical); 
    split2->addWidget(container); 
    split2->addWidget(editor3); 

    layout->addWidget(split2); 

    wnd.setLayout(layout); 

    wnd.show(); 

    return app.exec(); 


} 
+0

Super、QSplitterの中にレイアウトを挿入するとQtのいくつかのバグも解決されます! http://stackoverflow.com/questions/13868495/qt-qsplitter-and-unresponsive-gui-cpu-100 – linello

関連する問題