Qt - 同时制作水平和垂直的拆分器

标签 qt qsplitter

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

split window with two boxes atop a single wide box

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

最佳答案

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

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


}

关于Qt - 同时制作水平和垂直的拆分器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685005/

相关文章:

c++ - 最少的 openGL 初始化

c++ - Qt Thread 在 Linux 中进行 ping 操作

qt - 替换 Qsplitter 中的小部件而不丢失拉伸(stretch)因子

python - 调用 setSizes() 方法时如何为拆分器设置动画?

PyQt - 将布局添加到 QSplitter

qt - 如何从 QSplitter 中删除 QWidgets

QT Systray 图标出现在 Ubuntu 上的启动器旁边而不是面板上

c++ - 我无法在 QT 中编译我的项目

c++ - 为 Qt 中 Items 交集定义的区域着色

c++ - Qt QSplitter 窗口调整大小的固定高度小部件