• 《八》QSplitter拆分器以及QDockWidget窗口详解


    QSplitter简介

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

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

    常用方法 

     

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

    void setOpaqueResize(bool opaque = true)

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

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

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

    void setSizes(const QList<int> &list)

     示例:

    1. //拆分窗口(分割窗口)
    2. QSplitter *spWindow=new QSplitter(Qt::Horizontal,0);
    3. QTextEdit *txtedit=new QTextEdit("左边",spWindow);
    4. //2,拆分右边部分窗口
    5. QSplitter *spRight=new QSplitter(Qt::Vertical,spWindow);
    6. QTextEdit *spteditup=new QTextEdit("右边上半部分窗口",spRight);
    7. QTextEdit *spteditdown=new QTextEdit("右边下半部分窗口",spRight);
    8. //3:
    9. QSplitter *sptext=new QSplitter(Qt::Vertical,spRight);
    10. QTextEdit *txteditext=new QTextEdit("测试",sptext);
    11. spWindow->setWindowTitle("Splitter类拆分窗口");
    12. spWindow->show();

    QDockWidget简介

    QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。
            QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在QMindow窗口周围的dock widget区域中的。

     注意:QDockWidget目前只有锁定在QMainWindow窗口内部,才能展现出QDockWidget应有的属性,如果将QDockWidget放到布局管理器当中,那么就只能当作QWidget使用了。

    QDockWidget常用方法 

     常用函数:
      1、addDockWidget:添加停靠控件,用于指定或更改停靠控件的位置以及方向。

    1. void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget)
    2. void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation)

    2. splitDockWidget:分割窗口,用于对两个QDockWidget进行水平或垂直布局。

    void QMainWindow::splitDockWidget(QDockWidget * first, QDockWidget * second, Qt::Orientation orientation)

    3.tabifyDockWidget:合并窗口,用于将多个QDockWidget叠加到同一区域。

    void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)

     4、setDockNestingEnabled:是否允许嵌套布局

    void QMainWindow::setDockNestingEnabled(bool enabled)

     示例:

     先创建一个中心窗口,再创建其他部件:

    1. QTextEdit *tedit=new QTextEdit(this);//定义QTextEdit对象作为主窗口
    2. tedit->setAlignment(Qt::AlignCenter);//放到中心
    3. setCentralWidget(tedit);//设为中心部件

    创建窗口1:

    1. QDockWidget *dw1=new QDockWidget("停靠窗口(一)",this);
    2. //设置QDockWidget的特性为DockWidgetMovable,表示该窗口可以被移动。
    3. dw1->setFeatures(QDockWidget::DockWidgetMovable);
    4. dw1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    1. 创建一个名为"停靠窗口(一)"的QDockWidget对象,并将其指针赋值给了dw1。
    2. 使用setFeatures函数设置了QDockWidget的特性为DockWidgetMovable,表示该窗口可以被移动。
    3. 使用setAllowedAreas函数设置了QDockWidget的允许停靠区域为左侧和右侧。

    在窗口中创建一个文本框,在添加停靠部件,把文本框加到停靠窗口里面:

    1. QTextEdit *qtedit1=new QTextEdit();
    2. dw1->setWidget(qtedit1);
    3. addDockWidget(Qt::RightDockWidgetArea,dw1);

    第二个窗口也类似:

    1. QDockWidget *dw2=new QDockWidget("停靠窗口(二)",this);
    2. dw2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);//关闭
    3. QTextEdit *Qtedit2=new QTextEdit();
    4. dw2->setWidget(Qtedit2);
    5. addDockWidget(Qt::RightDockWidgetArea,dw2);

    解释:

    1.创建一个名为"停靠窗口(二)"的QDockWidget对象,并将其添加到当前窗口中。

    2.设置QDockWidget的特性,包括可关闭和可浮动。

    3.创建一个QTextEdit对象作为QDockWidget的内容部件。

    4.将QDockWidget添加到右侧停靠区域(Qt::RightDockWidgetArea)。

    这段代码的作用是在当前窗口中创建一个可关闭和可浮动的停靠窗口,其中的内容部件是一个QTextEdit对象,并将其添加到右侧停靠区域。

    结果:

  • 相关阅读:
    基于Springboot+vue的茶叶销售商城网站 elementui
    基于Greenplum-Spark Connector数据同步工具开发及遇到的坑
    爬虫常用笔记总结
    鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
    PHP 基金会的成立,开发人员或将获利?
    【回归预测-Lstm预测】基于长短期记忆网络LSTM实现电价时间序列单步预测附matlab代码
    前端网站分享
    QT 数据库表格----QSqlTableModel
    DDD领域驱动设计-值对象
    图论第4天
  • 原文地址:https://blog.csdn.net/ayf9999/article/details/137937245