• 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)。

    1. void setOpaqueResize(bool opaque = true)

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

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

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

    1. void setSizes(const QList<int> &list)

    3.示例

    3.1伸缩系数

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

    源码:

    1. QSplitter *s1 = new QSplitter(this);
    2. ui->verticalLayout->addWidget(s1);
    3. //添加3个widget
    4. QPlainTextEdit *t1 = new QPlainTextEdit(s1);
    5. t1->setPlaceholderText("t1");
    6. QPlainTextEdit *t2 = new QPlainTextEdit(s1);
    7. t2->setPlaceholderText("t2");
    8. QPlainTextEdit *t3 = new QPlainTextEdit(s1);
    9. t3->setPlaceholderText("t3");
    10. s1->addWidget(t1);
    11. s1->addWidget(t2);
    12. s1->addWidget(t3);
    13. s1->setStretchFactor(0,2);
    14. s1->setStretchFactor(1,1);
    15. s1->setStretchFactor(2,1);

    3.2 setOpaqueResize(false)效果

    默认为true,效果如下

    3.3QSplitter相互嵌套

    源码:

    1. QSplitter *mainSplitter = new QSplitter(this);
    2. ui->verticalLayout->addWidget(mainSplitter);
    3. QSplitter *rightSplitter = new QSplitter(mainSplitter);
    4. rightSplitter->setOrientation(Qt::Vertical); //设置垂直方向
    5. //添加3个widget
    6. QPlainTextEdit *t1 = new QPlainTextEdit(mainSplitter);
    7. t1->setPlaceholderText("t1");
    8. QPlainTextEdit *t2 = new QPlainTextEdit(rightSplitter);
    9. t2->setPlaceholderText("t2");
    10. QPlainTextEdit *t3 = new QPlainTextEdit(rightSplitter);
    11. t3->setPlaceholderText("t3");
    12. rightSplitter->addWidget(t2);
    13. rightSplitter->addWidget(t3);
    14. mainSplitter->addWidget(t1);
    15. mainSplitter->addWidget(rightSplitter);

  • 相关阅读:
    Flowable(四):关于CICD持续集成部署
    【Python】数据可视化利器PyCharts在测试工作中的应用
    Java框架 MyBaits核心配置文件详解
    速锐得解码新款坦克300网关(Gateway)采集CAN总线数据实操过程
    pip install paramiko出错的解决方案
    docker系列(一):Docker的三个基本概念
    Linux 时间同步 ntpd&chrony 内网
    小程序源码:王者荣耀改名神器-多玩法安装简单
    P02014030 陈子俊
    python实现电影院仿真(SimPy)
  • 原文地址:https://blog.csdn.net/wzz953200463/article/details/125546560