2011-12-30 21 views
7

Tengo un QGridLayout con un QSplitter en él. En ese QSplitter tengo dos elementos con un divisor que me permite mover el divisor de izquierda a derecha. Bien, ahí está bien. Pero luego quiero agregar otro divisor, pero eso se mueve hacia arriba y hacia abajo. (Voy a explicar con una imagen.)Qt - Hacer un divisor horizontal y vertical al mismo tiempo

split window with two boxes atop a single wide box

por lo que es en su mayoría con 2 divisores, que se mueve de izquierda a derecha y otra que se mueve arriba a abajo.

Espero que lo entiendas.

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

Aquí agrego solo 1 divisor, ya que no sé cómo hacer el 2º.

+0

¿Se puede agregar el código fuente que construye su 'QGridLayout' y agrega el divisor? – sarnold

+0

@sarnold: editó la primera publicación. – Kazuma

Respuesta

15

Debe ser capaz de adaptar esto a sus necesidades con facilidad. La idea es crear un contenedor para los dos primeros elementos, luego conectar el contenedor con el tercer elemento a través de divisores.

#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, ¡esto también resuelve algunos errores en Qt cuando insertas diseños dentro de QSplitter! http://stackoverflow.com/questions/13868495/qt-qsplitter-and-unresponsive-gui-cpu-100 – linello

Cuestiones relacionadas