我制作了一个示例,展示了我对分割器的调查。我在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;
}
答案 0 :(得分:1)
而不是使用
this->layout()->addWidget(splitter5);
您必须将拆分器添加到中央窗口小部件。 (见QMainWindow
)。
如果您只使用拆分器,则可以将其设置为中央窗口小部件:
this->setCentralWidget(splitter5);
如果您需要更多元素,请将容器创建为中央窗口小部件并添加自己的布局。