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

  • 相关阅读:
    机器学习之旅-从Python 开始
    haproxy使用
    针对微电网中可时移,柔性,基础负荷的电价响应模型---代码解析
    从0开始学习JavaScript--JavaScript DOM操作与事件处理
    java基本web蓝桥杯名师工作室计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    二维数组根据某个字段进行分组
    虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!
    使用DataSecurity Plus可以快速检测威胁并自动响应事件
    EMQ 宣布推出 LF Edge eKuiper 全新 Logo 标识
    哈夫曼树实现文件压缩
  • 原文地址:https://blog.csdn.net/wzz953200463/article/details/125546560