12

我有QGridLayout一个QSplitter就可以了。在那里QSplitter我有两个带有分离器的元素,可以让我将分离器从左向右移动。很好,那里很好。但后来我想添加另一个拆分器,但它会从上到下移动。(我会用一张图来解释。)

一个宽框上带有两个框的拆分窗口

所以它主要有 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 个分离器,因为我不知道如何做第二个。

4

1 回答 1

17

您应该能够轻松地根据您的需要进行调整。这个想法是为前两个元素创建一个容器,然后通过拆分器将容器与第三个元素连接起来。

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


}
于 2011-12-31T02:54:54.893 回答