2011-12-30 34 views
7

Tôi có một QGridLayout với số QSplitter trên đó. Trong đó QSplitter Tôi có hai yếu tố với một splitter cho phép tôi di chuyển splitter từ trái sang phải. Được rồi, không sao đâu. Nhưng sau đó tôi muốn thêm một splitter khác nhưng di chuyển lên xuống. (Tôi sẽ giải thích với một hình ảnh.)Qt - Tạo bộ chia ngang và dọc cùng một lúc

split window with two boxes atop a single wide box

Vì vậy, nó chủ yếu có 2 splitter, một mà di chuyển từ trái sang phải và khác mà di chuyển để xuống lên.

Tôi hy vọng bạn hiểu.

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); 

Ở đây tôi thêm chỉ 1 splitter, vì tôi không biết làm thế nào để thực hiện một trong 2.

+0

Bạn có thể thêm mã nguồn xây dựng 'QGridLayout' và thêm bộ tách không? – sarnold

+0

@sarnold: Đã chỉnh sửa bài đăng đầu tiên. – Kazuma

Trả lời

15

Bạn sẽ có thể điều chỉnh yêu cầu này một cách dễ dàng. Ý tưởng là tạo vùng chứa cho hai phần tử đầu tiên, sau đó kết nối vùng chứa với phần tử thứ 3 thông qua bộ tách.

#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

Siêu, điều này cũng giải quyết một số lỗi trong Qt khi bạn chèn các bố trí bên trong QSplitter! http://stackoverflow.com/questions/13868495/qt-qsplitter-and-unresponsive-gui-cpu-100 – linello

Các vấn đề liên quan