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 <QTextEdit>
#include <QDockWidget>

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;
}

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

void setFeatures(DockWidgetFeatures features)

参数 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 类也是在应用程序中经常用到的

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东.'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值