Qt - 如何同时使分割窗口水平和垂直?

13
我有一个带有 QSplitterQGridLayout。在该 QSplitter 中,我有两个元素,这些元素有一个分隔器,可以让我将分隔器从左到右移动。很好,它是好的。但是现在我想添加另一个分隔器,使它可以从上到下移动。(我将通过一张图片来解释。)

split window with two boxes atop a single wide box

所以主要是有两个分隔器,一个向左到右移动,另一个向上到下移动。
我希望你能理解。
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);

这里我只添加了一个分隔符,因为我不知道如何添加第二个。


дҪ иғҪж·»еҠ жһ„е»әQGridLayout并添еҠ еҲҶеүІеҷЁзҡ„жәҗд»Јз Ғеҗ—пјҹ - sarnold
@sarnold:已编辑第一篇帖子。 - Kazuma
1个回答

18
你应该能够轻松地根据自己的需要进行调整。其思想是创建一个容器来存放前两个元素,然后通过分离器将容器与第三个元素连接起来。
#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();


}

太棒了,这也解决了在QSplitter中插入布局时Qt中的一些错误! - linello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接