c++ - 如何使用拆分器

标签 c++ qt

我准备了一个例子来展示我对分离器的调查。我在 mainWindow 中有 9 个文本编辑(没有布局)。我想创建动态布局。它必须是动态的,因为 a) 用户选择应该显示多少元素。 b) 我不想使用隐藏元素,因为它们的分离器仍然存在。 c) 我知道如何在 QTDesigner 中创建静态布局

我的问题是手动布局。将来我需要展示例如前 2 个文本编辑。然后是 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

最佳答案

而不是使用

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

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

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

this->setCentralWidget(splitter5);

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

关于c++ - 如何使用拆分器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109485/

相关文章:

c++ - 在 GUI 或控制台 (cout) 中报告进度的方式

c++ - 第一次异常发生在 ... : Access violation reading location . .. 使用 Visual Studio 2010 进行调试时

c++ - 错误 : Label used but not defined when using && operator

c++ - 为什么 std::bitset 的位顺序相反?

c++ - 确定最佳转换的 Variadic 模板

c++ - 使 QDialog 只读,但仍然可以选择文本

c++ - QMediaPlayer duration() 总是返回 0

c++ - 如何使用 Qt 创建正确的 GUI 小部件?

c++ - 是否有任何可观察的 Qt 容器类?

c++ - 将 ipython qt-console 作为 qwidget 嵌入到 qt/c++ 应用程序中