如何使用拆分器

时间:2016-03-20 02:08:01

标签: c++ qt

我制作了一个示例,展示了我对分割器的调查。我在mainWindow中有9个textEdits(没有布局)。我想创建动态布局。它必须是动态的,因为 a)用户选择应显示的元素数量。 b)我不想使用隐藏元素,因为它们仍然存在分裂。 c)我知道如何在QTDesigner中创建静态布局

我的问题是手动布局。在将来我需要显示例如前2个textEdits。然后4 texEdits等...

此示例存在splitter5未处于完整窗口大小的问题。 MainWindow边距与splitter5无关。

你知道问题出在哪里吗? 另外,我不确定这是否是正确的方法。也许还有其他更好的解决方案吗?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSplitter>
#include <QGridLayout>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter *splitter1 = new QSplitter(Qt::Horizontal);
    QSplitter *splitter2 = new QSplitter(Qt::Horizontal);
    QSplitter *splitter3 = new QSplitter(Qt::Horizontal);
    QSplitter *splitter4 = new QSplitter(Qt::Vertical);
    QSplitter *splitter5 = new QSplitter(Qt::Vertical);


    splitter1->addWidget(ui->textEdit);
    splitter1->addWidget(ui->textEdit_2);
    splitter1->addWidget(ui->textEdit_3);

    splitter2->addWidget(ui->textEdit_4);
    splitter2->addWidget(ui->textEdit_5);
    splitter2->addWidget(ui->textEdit_6);

    splitter3->addWidget(ui->textEdit_7);
    splitter3->addWidget(ui->textEdit_8);
    splitter3->addWidget(ui->textEdit_9);

    splitter4->addWidget(splitter1);
    splitter4->addWidget(splitter2);

    splitter5->addWidget(splitter3);
    splitter5->addWidget(splitter4);

    this->layout()->addWidget(splitter5);
}

MainWindow::~MainWindow()
{
    delete ui;
}

问题标有箭头 enter image description here

1 个答案:

答案 0 :(得分:1)

而不是使用

this->layout()->addWidget(splitter5);

您必须将拆分器添加到中央窗口小部件。 (见QMainWindow)。

如果您只使用拆分器,则可以将其设置为中央窗口小部件:

this->setCentralWidget(splitter5);

如果您需要更多元素,请将容器创建为中央窗口小部件并添加自己的布局。