第三章 Qt5布局管理——3.2停靠窗口QDockWidget

2024-01-08 01:04:52

目录

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

二、设置窗口属性

setFeatures()方法设置停靠窗体的特性:

setAllowedAreas()方法设置停靠窗体可停靠的区域:


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

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

(2)设置此停靠窗体的属性,通常调用setFeatures()"[停靠窗体属性]"及setAllowedAreas()"[设置停靠窗体可停靠的区域]"两种方法。

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

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

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

例子:

????????窗口1只能在主窗口的左边和右边停靠;窗口2只在浮动和右部停靠两种状态间切换,并且不可移动;窗口3可实现停靠窗口的各种状态。程序运行如下:

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    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);//停靠窗体可以移动
    dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//可在主窗口左 | 右侧
    QTextEdit * te1 = new QTextEdit();
    te1->setText(tr("Window1,The dock widget can be moved 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();
    te3->setText(tr("Window3,The dock widget can be closed, moved, and floated"));
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock);
}

MainWindow::~MainWindow()
{

}

二、设置窗口属性

setFeatures()方法设置停靠窗体的特性:

QDockWidget::DockWidgetClosable:停靠窗口可以关闭
QDockWidget::DockWidgetMovable:停靠窗口可以移动
QDockWidget::DockWidgetFloatable:停靠窗口可以浮动
QDockWidget::AllDockWidgetFeatures:拥有停靠窗口的所有特性
QDockWidget::NoDockWidgetFeatures:不能移动、不能关闭、不能浮动

setAllowedAreas()方法设置停靠窗体可停靠的区域:

Qt::LeftDockWidgetArea:可在主窗口的左侧停靠
Qt::RightDockWidgetArea:可在主窗口的右侧停靠
Qt::TopDockWidgetArea:可在主窗口的顶部停靠
Qt::BottomDockWidgetArea:可在主窗口的底部停靠
Qt::AllDockWidgetAreas:可在主窗口任意位置(以上四个)停靠
Qt::NoDockWidgetArea:只可停靠在插入处

文章来源:https://blog.csdn.net/2302_79253478/article/details/135322515
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。