当前位置: 首页 > news >正文

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.程序运行界面

http://www.lryc.cn/news/393475.html

相关文章:

  • vue3.0(十六)axios详解以及完整封装方法
  • Python用于处理 DNS 查询库之Dnspython 使用详解
  • Django ORM 中过滤 JSON 数据
  • 深入探索C语言中的结构体:定义、特性与应用
  • EDEM-FLUENT耦合报错几大原因总结(持续更新)
  • ctfshow sql注入 web234--web241
  • Python的招聘数据分析与可视化管理系统-计算机毕业设计源码55218
  • 使用ChatGPT写学术论文的技巧和最佳实践指南
  • 多模态图像引导手术导航进展
  • 小程序 全局数据共享 getApp()
  • 第一次面试的经历(java开发实习生)
  • GitHub Copilot API
  • CobaltStrike的内网安全
  • Linux之进程控制(下)
  • Mac搭建anaconda环境并安装深度学习库
  • Linux:文件系统与日志分析
  • 迈阿密色主题学科 HTML5静态导航源码
  • Qt 基础组件速学 鼠标和键盘事件
  • 【踩坑】解决undetected-chromedriver报错cannot connect to-chrome
  • PyCharm 2024.1 版本更新亮点:智能编程,高效协作
  • 网络安全设备——蜜罐
  • Java与Selenium配置及常见报错解决方法
  • 最新扣子(Coze)实战案例:使用图像流做超分,模糊图片秒变清晰,完全免费教程
  • 数组相关内容
  • 【Python机器学习】模型评估与改进——打乱划分交叉验证
  • nodejs操作excel文件实例,读取sheets, 设置cell颜色
  • 用GPT做足球预测案例分享
  • 代码随想录| 编辑距离
  • MOJO编程语言的编译与执行:深入编译器与解释器的工作原理
  • nginx-限制客户端并发数