QT5布局管理---3.2分割窗口QDockWidget类

一、流程:

停靠窗口QDockWidget类也是在应用程序中经常用到的,设置窗口的一般流程如下:

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

(2)设置停靠窗体的属性,通常调用setFeatures()及setAreas()两种方法。

(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit。

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

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

二、源码:

停靠窗体QDockWidget类的使用:窗口1只可在主窗口的左边和右边停靠;窗口2只可在浮动的右部停靠两种状态间切换,并且不可移动;窗口3可实现停靠窗口的各种状态。效果图如下:

(1)DockWidget.h

#ifndef DOCKWINDOWS_H
#define DOCKWINDOWS_H

#include <QMainWindow>

class DockWindows : public QMainWindow
{
    Q_OBJECT

public:
    DockWindows(QWidget *parent = nullptr);
    ~DockWindows();
};
#endif // DOCKWINDOWS_H

(2)DockWidget.cpp

#include "dockwindows.h"
#include "QTextEdit"
#include "QDockWidget"

DockWindows::DockWindows(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle(QString::fromLocal8Bit("DockWindows"));      //设置主场口的标题文字
    QTextEdit *te = new QTextEdit(this);                        //定义一个QTextEdit对象作为主窗口
    te->setText(QString::fromLocal8Bit("三国演义之桃园三结义"));         //主窗口设置文本为mainwinds
    te->setAlignment(Qt::AlignCenter);                          //文字居中
    setCentralWidget(te);                                       //将此编辑框设为主窗口的中央窗体

    //停靠窗口1
    QDockWidget *dock = new QDockWidget(QString::fromLocal8Bit("窗口1"),this);
    //可移动
    dock->setFeatures(QDockWidget::DockWidgetMovable);                      //a
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);  //b

    QTextEdit *te1 =new QTextEdit();
    te1->setText(QString::fromLocal8Bit("刘备,那人不甚好读书;性宽和,寡言语,喜怒不形于色;素有大志,专好结交天下豪杰;生得身长七尺五寸,两耳垂肩,双手过膝,目能自顾其耳,面如冠玉,唇若涂脂;" ""));
    dock->setWidget(te1);
    addDockWidget(Qt::RightDockWidgetArea,dock);

    //停靠窗口2
    dock =new QDockWidget(QString::fromLocal8Bit("窗口2"),this);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable);

    QTextEdit *te2 =new QTextEdit();
    te2->setText(QString::fromLocal8Bit("关羽,身长九尺,髯长二尺,面若重枣,唇若涂脂,丹凤眼、眉卧蚕,相貌堂堂,威风凛凛”。其丹凤眼和卧蚕眉乃世间罕见,凤眼生威,卧蚕似雾,英气逼人,霸气十足。据说他丹凤眼一睁,就是要杀人。关羽有美须髯,万人之敌、忠义双全;好读左氏春秋,能诵读如流。使青龙偃月刀,胯下赤兔马 " ""));
    dock->setWidget(te2);
    addDockWidget(Qt::RightDockWidgetArea,dock);

    //停靠窗口3
    dock =new QDockWidget(QString::fromLocal8Bit("窗口3"),this);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable);

    QTextEdit *te3 =new QTextEdit();
    te3->setText(QString::fromLocal8Bit("张飞,身长八尺,豹头环眼,燕颔虎须,生若巨雷,势如奔马”是原文对张飞的描写,而在电视剧中我们看到,张飞长得黑黝黝,络腮胡子向上下左右四个方向生长,眼睛总是瞪得滚圆,发怒的时候眼珠子就像要跳出来似的,说话用来吼,如打雷般让人震撼 " ""));
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock);
}

DockWindows::~DockWindows()
{
}

其中:

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

void setFeatures(DockWidgetFeatures features)

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

        ①DockWidget::DockWidgetClosable:停靠窗体可关闭

        ②DockWidget::DockWidgetMovable:停靠窗体可移动

        ③DockWidget::DockWidgetFloatable:停靠窗体可浮动

        ④DockWidget::AllDockWidgetFeatures:此参数表示拥有停靠窗体的所有特性

        ⑤DockWidget::NoDockWidgetFeatures:不可移动、不可关闭、不可浮动

        此参数可采用或(|)的方式对停靠窗体进行特性的设定

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

void setAllowedAreas(Qt::DockWidgetAreas areas)

参数Qt::DockWidgetAreas指定停靠窗体可停靠的区域,包括以下几种参数。

        ①Qt::LeftDockWidgetAreas:可在主窗体左侧停靠

        ②Qt::RightDockWidgetAreas:可在主窗体右侧停靠

        ③Qt::TopDockWidgetAreas:可在主窗体顶部停靠

        ④Qt::BottomDockWidgetAreas:可在主窗体底部停靠

        ⑤Qt::AllDockWidgetAreas:可在主窗体任意(以上四个)部位停靠

        ⑥Qt::NoDockWidgetAreas:只可停靠在插入处

        各区域设定也可采用或(|)的方式进行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值