QDockWidget类详解

一.QDockWidget类概述

1.QDockWidget类

QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。

QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在QMindow窗口周围的dock widget区域中的。

如下图所示:

Dock windows可以在几个区域中移动,或者是悬浮。该类提供的API允许程序员限制dock widgets的移动,悬浮和关闭,以及它可以被放置的区域。

注意:QDockWidget目前只有锁定在QMainWindow窗口内部,才能展现出QDockWidget应有的属性,如果将QDockWidget放到布局管理器当中,那么就只能当作QWidget使用了。

2.QDockWidget功能和QSplitter类有一定的类似之处,见之前文章:

QSplitter分裂器的使用方法:https://mp.csdn.net/mp_blog/creation/editor/138561130

二.QDockWidget常用方法

常用函数:

1.addDockWidget:添加停靠控件,用于指定或更改停靠控件的位置以及方向。

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget)

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation)

2.splitDockWidget:分割窗口,用于对两个QDockWidget进行水平或垂直布局。

void QMainWindow::splitDockWidget(QDockWidget * first, QDockWidget * second, Qt::Orientation orientation)

3.tabifyDockWidget:合并窗口,用于将多个QDockWidget叠加到同一区域。

void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)

4.setDockNestingEnabled:是否允许嵌套布局

void QMainWindow::setDockNestingEnabled(bool enabled)

三.demo

1.MyForm.h

#ifndef MYFORM_H

#define MYFORM_H

#include "ui_form.h"

#include <QDockWidget>

class MyForm:public QDockWidget

{

    Q_OBJECT

public:

    explicit MyForm();

    ~MyForm();

private:

    Ui::Form *ui;

};

#endif // MYFORM_H

2.MyForm.cpp

#include "MyForm.h"

#include "ui_form.h"

MyForm::MyForm():ui(new Ui::Form)

{

    ui->setupUi(this);

}

MyForm::~MyForm()

{

    delete ui;

}

3.mywindow.h

#ifndef MYWINDOW_H

#define MYWINDOW_H

#include <QMainWindow>

namespace Ui {

class MyWindow;

}

class MyWindow : public QMainWindow

{

    Q_OBJECT

    

public:

    explicit MyWindow(QWidget *parent = 0);

    ~MyWindow();

    

private:

    Ui::MyWindow *ui;

};

#endif // MYWINDOW_H

4.mywindow.cpp

#include "mywindow.h"

#include "ui_mywindow.h"

#include <QTextEdit>

#include <QDockWidget>

#include "MyForm.h"

MyWindow::MyWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MyWindow)

{

    ui->setupUi(this);

    QTextEdit *text = new QTextEdit("");

    text->append("");

    setCentralWidget(text);

    

    

    QDockWidget *dockWidget1 = new /*QDockWidget("A");*/ MyForm();

    addDockWidget(Qt::LeftDockWidgetArea,dockWidget1);

    QDockWidget *dockWidget2 = new QDockWidget("B");

    addDockWidget(Qt::RightDockWidgetArea,dockWidget2);

    QDockWidget *dockWidget3 = new QDockWidget("C");

    addDockWidget(Qt::TopDockWidgetArea,dockWidget3);

    QDockWidget *dockWidget4 = new QDockWidget("D");

    addDockWidget(Qt::BottomDockWidgetArea,dockWidget4);

}

MyWindow::~MyWindow()

{

    delete ui;

}

5.程序运行界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI+程序员在路上

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

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

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

打赏作者

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

抵扣说明:

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

余额充值