• Qt5开发从入门到精通——第三篇(窗口篇——停靠窗口)


    欢迎小伙伴的点评✨✨,相互学习、互关必回、全天在线🍳🍳🍳
    博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩‍🚀


    前言

    本章节将会给大家带来停靠窗口(QDock Widget)的详细使用方法


    一、停靠窗口 QDockWidget

    1.1、设置停靠窗口的一般流程如下:

    (1)创建一个 QDockWidget 对象的停靠窗体 。

    (2)设置此停靠窗体的属性,通常调用 setF eaturesO及 setAllowedAreas()两种方法。

    (3)新建一个要插入停靠窗体的控件,常用的有 QListWidget 和 QTextEdit 、【也可以加载自己封装的类】。

    (4)将控件插入停靠窗体,调用 QDockWidget 的 setWidget()方法 。

    (5)使用 addDockWidget()方法在 MainWindow 中加入此停靠窗体 。

    1.2、停靠窗口 QDockWidget 类的使用:

    • 窗口 1 只可在主窗口的左边和右边停靠;
    • 窗口 2 只可在浮动和右部停靠两种状态间切换,并且不可移动;
    • 窗口 3 可实现停靠
    • 窗口的各种状态。效果如图一所示。
      图一
      在这里插入图片描述

    二、实例原码详解

    2.1、mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include 
    #include 
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
    
        setWindowTitle(tr("DockWindows")); //设置主窗口的标题栏文字
        QTextEdit *te=new QTextEdit(this); //定义一个 QTextEdit 对象作为主窗口
        te->setText(tr("Main Window"));
        te->setAlignment (Qt::AlignCenter);
        setCentralWidget(te); //将此编辑框设为主窗口的中央窗体
        //停靠窗口 1
        QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);
        //可移动
        dock->setFeatures (QDockWidget:: DockWidgetMovable) ; //(a)
        dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);//(b)
        QTextEdit *tel=new QTextEdit();
        tel->setText(tr("Windowl,The dock widget can be moved between docks by the user" ""));
        dock->setWidget(tel);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
        //停靠窗口2
        dock = new QDockWidget(tr("DockWindow2"),this);
        dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); //可关闭、可浮动
    
        QTextEdit *te2 = new QTextEdit();
        te2->setText(tr("Windows2,dock widget can be detached from the main window and floated as an independent window ,and can be closed" ""));
        dock->setWidget(te2);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
        //停靠窗口3
        dock = new QDockWidget(tr("DockWidget3"),this);
        dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性
        QTextEdit *te3 = new QTextEdit();
        te3->setText(tr("Window3,The dock widget can be closed,moved,and floated"));
        dock->setWidget(te3);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
    
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    其中,
    (a) setFeatures() 方法设置停靠窗体的特性,原型如下:

    void setFeatures(DockWidgetFeatures features)
    
    • 1

    参数 QDockWidget::DockWidgetFeatures 指定停靠窗体的特性,包括以下几种参数。

    • QDockWidget::DockWidgetClosable: 停靠窗体可关闭。
    • DockWidget::DockWidgetMovable: 停靠窗体可移动。
    • QDockWidget::DockWidgetFloatable: 停靠窗体可浮动。
    • QDockWidget: :AllDockWidgetFeatures: 此参数表示拥有停靠窗体的所有特性。
    • QDockWidget: :NoDockWidgetFeatures: 不可移动、不可关闭、不可浮动。
    • 此参数可采用或(I)的方式对停靠窗体进行特性的设定。

    (b) setAllowedAreas()方法设置停靠窗体可停靠的区域,原型如下:

    • Qt::LeftDockWidgetArea: 可在主窗口的左侧停靠。
    • Qt::RightDockWidgetArea: 可在主窗口的右侧停靠。
    • Qt::TopDockWidgetArea: 可在主窗口的顶部停靠。
    • Qt::BottomDockWidgetArea: 可在主窗口的底部停靠。
    • Qt::AllDockWidgetArea: 可在主窗口任意(以上四个)部位停靠。
    • Qt::NoDockWidgetArea: 只可停靠在插入处。
    • 各区域设定也可采用或(I)的方式进行。

    总结

    停靠窗口 QDockWidget 类也是在应用程序中经常用到的

  • 相关阅读:
    本博客IDL 学习目录
    Scala Iterator(迭代器)
    【代码随想录】【算法训练营】【第27天】 [39]组合总和 [40] 组合总和II [131]分割回文串
    PG::Potato
    WINDOWS+PHP+Mysql+Apache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境
    python:pyqt5案例(简易浏览器)
    子网掩码的作用
    C++初阶:C/C++内存管理
    腾讯云服务器如何使用WooCommerce 应用镜像搭建电商独立网站
    线上应用部署了两台load为1四核服务器
  • 原文地址:https://blog.csdn.net/weixin_44759598/article/details/126521058