2011-12-30 41 views
7

我有一個QGridLayout,其上有一個QSplitter。在那QSplitter我有兩個元素與分離器,讓我從左到右移動分離器。好吧,那很好。但是接下來我想添加另一個分離器,但是這個分離器會上下移動。 (我會用圖像解釋。)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); 

在這裏,我只添加1個分配器,因爲我不知道如何做第二個。

+0

您可以添加構建「QGridLayout」的源代碼並添加分離器嗎? – sarnold 2011-12-30 23:29:50

+0

@sarnold:在那裏編輯了第一篇文章。 – Kazuma 2011-12-31 00:33:27

回答

15

您應該可以輕鬆地適應您的需求。這個想法是爲前兩個元素創建一個容器,然後通過拆分器將容器與第三個元素連接起來。

#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

超級,當你在QSplitter中插入佈局時,這也解決了Qt中的一些錯誤! http://stackoverflow.com/questions/13868495/qt-qsplitter-and-unresponsive-gui-cpu-100 – linello 2012-12-14 12:15:13