Qt QSplitter拆分器

1.简介

QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。

单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件,并使用insertWidget()或addWidget()添加它们。

2.常用方法

void addWidget(QWidget *widget) 添加widget
int count() const 返回拆分器布局中包含的小部件数量。
void setOrientation(Qt::Orientation) 设置方向,水平,垂直,默认水平的
void setStretchFactor(int index, int stretch) 设置伸缩系数
void insertWidget(int index, QWidget *widget) 插入widget

默认情况下,QSplitter会动态调整其子元素的大小。如果您希望QSplitter仅在调整大小操作结束时调整子元素的大小, 那么调用setOpaqueResize(false)。

void setOpaqueResize(bool opaque = true)

将子部件的各自大小设置为列表中给定的值。

如果splitter是水平的,则这些值将以像素为单位设置每个小部件的宽度,从左到右。

如果splitter是垂直的,则从上到下设置每个小部件的高度

void setSizes(const QList &list)

3.示例

3.1伸缩系数

Qt QSplitter拆分器_第1张图片

添加3个QPlainTextEdit,默认水平方式添加的,并且设置了伸缩系数,我个人理解,伸缩系数,好比,比例系数。上图比例为 2:1:1。

源码:

    QSplitter *s1 = new QSplitter(this);
    ui->verticalLayout->addWidget(s1);

    //添加3个widget
    QPlainTextEdit *t1 = new QPlainTextEdit(s1);
    t1->setPlaceholderText("t1");

    QPlainTextEdit *t2 = new QPlainTextEdit(s1);
    t2->setPlaceholderText("t2");

    QPlainTextEdit *t3 = new QPlainTextEdit(s1);
    t3->setPlaceholderText("t3");

    s1->addWidget(t1);
    s1->addWidget(t2);
    s1->addWidget(t3);

    s1->setStretchFactor(0,2);
    s1->setStretchFactor(1,1);
    s1->setStretchFactor(2,1);

3.2 setOpaqueResize(false)效果

Qt QSplitter拆分器_第2张图片

默认为true,效果如下

Qt QSplitter拆分器_第3张图片

3.3QSplitter相互嵌套

Qt QSplitter拆分器_第4张图片

源码:

    QSplitter *mainSplitter = new QSplitter(this);
    ui->verticalLayout->addWidget(mainSplitter);

    QSplitter *rightSplitter = new QSplitter(mainSplitter);
    rightSplitter->setOrientation(Qt::Vertical);    //设置垂直方向

    //添加3个widget
    QPlainTextEdit *t1 = new QPlainTextEdit(mainSplitter);
    t1->setPlaceholderText("t1");

    QPlainTextEdit *t2 = new QPlainTextEdit(rightSplitter);
    t2->setPlaceholderText("t2");

    QPlainTextEdit *t3 = new QPlainTextEdit(rightSplitter);
    t3->setPlaceholderText("t3");

    rightSplitter->addWidget(t2);
    rightSplitter->addWidget(t3);

    mainSplitter->addWidget(t1);
    mainSplitter->addWidget(rightSplitter);

你可能感兴趣的:(Qt入门,qt,开发语言,QSplitter,拆分器)