2011-12-30 25 views
7

Mam QGridLayout z na nim. W tym QSplitter mam dwa elementy z rozdzielaczem, który pozwala mi przesuwać splitter z lewej na prawą. Dobrze, jest w porządku. Ale potem chcę dodać kolejny splitter, ale przesuwa się on w dół. (Wytłumaczę z obrazem.)Qt - Tworzenie splittera poziomego i pionowego w tym samym czasie

split window with two boxes atop a single wide box

Więc to przede wszystkim posiadający 2 cięcia, taki, który porusza się od lewej do prawej, a drugi, który porusza się w górę-dół.

Mam nadzieję, że rozumiesz.

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

Tutaj dodaję tylko 1 splitter, ponieważ nie wiem jak zrobić drugi.

+0

Czy możesz dodać kod źródłowy, który buduje 'QGridLayout' i dodaje rozdzielacz? – sarnold

+0

@sarnold: Edytował pierwszy wpis. – Kazuma

Odpowiedz

15

Powinieneś być w stanie łatwo dostosować to do swoich potrzeb. Chodzi o to, aby utworzyć kontener dla pierwszych dwóch elementów, a następnie połączyć pojemnik z trzecim elementem za pomocą rozgałęźników.

#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, to również rozwiązuje niektóre błędy w Qt podczas wstawiania układów wewnątrz QSplitter! http://stackoverflow.com/questions/13868495/qt-qsplitter-and-unresponsive-gui-cpu-100 – linello

Powiązane problemy