停靠窗口QDockWidget

概述

停靠窗口QDockWidget类是应用程序中经常用到的,设置停靠窗口的一般流程如下
(1)创建一个QDockWidget对象的停靠窗口
(2)设置此停靠窗口的属性,通常调用setFeatures()及setAllowedAreas()两种方法
(3)新建一个要插入停靠窗体的控件,常用的有QListWidget和QTextEdit
(4)将控件插入停靠窗体,调用QDockWidget的setWidget()方法
(5)使用addDockWidget()方法在MainWindow中加入此停靠窗体

代码

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

DockWindows::DockWindows(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle(tr("DockWindwos"));  //设置主窗口的标题栏文字
    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);
    //设定停靠窗口可停靠的区域
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    QTextEdit *te1=new QTextEdit();
    te1->setText(tr("window1,the dock widget can be move between docks"
                    "by the user" " "));
    dock->setWidget(te1);
    addDockWidget(Qt::RightDockWidgetArea,dock);

    //停靠窗口2
    dock=new QDockWidget(tr("DockWindow2"),this);
    dock->setFeatures(QDockWidget::DockWidgetClosable|
                      QDockWidget::DockWidgetFloatable);  //可关闭,可浮动
    QTextEdit *te2=new QTextEdit();
    te2->setText(tr("Window2,the 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("DockWindow3"),this);
    dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //全部特性
    QTextEdit *te3=new QTextEdit();
    te2->setText(tr("Window3, the dock widget can be closed ,moved,and"
                    "floated"));
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock);


}
setFeatures(DockWidgetFeatures features)设置停靠窗体的特性
QDockWidget::DockWidgetClosable  //停靠窗体可以关闭
QDockWidget::DockWidgetFloatable  //停靠窗体可浮动
QDockWidget::DockWidgetMovable  //停靠窗体可移动
QDockWidget::AllDockWidgetFeatures  //此参数表示拥有停靠窗体的全部属性
QDockWidget::NoDockWidgetFeatures  //不可移动,不可关闭,不可浮动
此参数可以采用或(|)的方式对停靠窗体进行特性的设定
setAllowedAreas()设置停靠窗体可停靠的区域
Qt::LeftDockWidgetArea  //可在主窗口的左侧停靠
Qt::RightDockWidgetArea  //可在主窗口的右侧停靠
Qt::TopDockWidgetArea  //可在主窗口的上侧停靠
Qt::BottomDockWidgetArea  //可在停靠主窗口的底部停靠
Qt::AllDockWidgetAreas  //可在主窗口的任意部分停靠
Qt::NoDockWidgetArea  //只停靠在插入处
此参数可以采用或(|)的方式对停靠区域进行设置

运行结果

参考资料
1 《Qt5开发及实例》

posted @ 2018-07-15 20:42  尚修能的技术博客  阅读(752)  评论(0编辑  收藏  举报