(十七)QDockWidget详解

Qt之QDockWidget窗口详解—含演示Demo 阅读详情

转自:http://blog.youkuaiyun.com/chenlong12580/article/details/9051847

作者:chenlong12580

 QDockWidget类详解

【详细描述】

QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。
QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在
QMindow窗口周围的dock widget区域中的。

如下图所示:


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

【外观】

一个QDockWidget包含一个小的工具栏和内容区域。小的工具栏用于显示窗口标题,一个浮动按钮和一个关闭按钮。取决于QDockWidget的状态,浮动按钮和关闭按钮可能或者禁止或者完全不显示。

工具栏和按钮的显示取决于你所使用的样式。

QDockWidget可以作为它子窗口部件的封装,通过setWidget()设置子窗口部件。自定义的尺寸提示,最小和最大化尺寸已经尺寸策略都必须由子窗口部件来实现。QDockWidget会遵守它们,调整它自己的限制包括框架和工具栏。我们不应该为QDockWidget设置尺寸限制,因为它们根据QDockWidget是否锁住而改变,一个锁住的QDockWidget窗口部件不包括框架和小的工具栏。

【类详解】

1、QDockWidget对象包含一些特性,例如:移动、悬浮、关闭等等,这些都是枚举类型:


2、QDockWidget可以放置的位置,也是枚举类型:


3、成员函数:void QDockWidget::setTitleBarWidget(QWidget * widget)

设置任意的widget作为dock widget的工具栏。如果widget设置为0,那么之前在dock widget上设置的任意自定义工具栏都会被清除,但是不是删除,并且会使用默认的工具栏。
如果我们为工具栏设置了widget,那么当它悬浮的时候,QDockWidget不会使用本地窗口装饰它。
下面是对实现自定义的工具栏的一些建议:
*那些不是明确由工具栏处理的鼠标事件应该通过调用QMouseEvent::ignore()函数忽略掉。这些事件就会传递给QDockWidget,由
QDockWidget按照常规的方式处理。拖动鼠标的时候就移动,双击的时候就锁住/解锁等等。
*当为QDockWidget设置了DockWidgetVerticalTitleBar时,那么工具栏窗口部件就会相应的放置在新的位置上。在resizeEvent()中
,工具栏必须检查放置的方向:
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget());
if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) {
    // I need to be vertical
} else {
    // I need to be horizontal
}
*工具栏widget必须包含有合法的QWidget::sizeHint()和QWidget::minimumSizeHint()。这些方法必须考虑工具栏放置的方向。
*从一个锁定的widget中移除工具栏是不可能的。然而,我们可以通过将默认构造的QWidget作为工具栏widget来达到这种效果。

4、成员函数:void QDockWidget::setWidget(QWidget * widget)

当widget添加的时候,如果dock widget是可见的,那么你就需要显示的调用show()函数。

在调用这个函数之前,你必须先添加widget的布局,否则,添加的widget就是不可见的。

【示例1】

{效果}


{实现}


【示例2】

{效果}


{实现}

这里的dockwidget较之前的要丰富得多,是因为自定义了类ColorSwatch,该类继承自QDockWidget:

[cpp]  view plain  copy
  1. <span style="font-family:Verdana;font-size:14px;">class ColorSwatch : public QDockWidget  
  2. {  
  3.     Q_OBJECT  
  4.   
  5.     QAction *closableAction;  
  6.     QAction *movableAction;  
  7.     QAction *floatableAction;  
  8.     QAction *floatingAction;  
  9.     QAction *verticalTitleBarAction;  
  10.   
  11.     QActionGroup *allowedAreasActions;  
  12.     QAction *allowLeftAction;  
  13.     QAction *allowRightAction;  
  14.     QAction *allowTopAction;  
  15.     QAction *allowBottomAction;  
  16.   
  17.     QActionGroup *areaActions;  
  18.     QAction *leftAction;  
  19.     QAction *rightAction;  
  20.     QAction *topAction;  
  21.     QAction *bottomAction;  
  22.   
  23.     QAction *changeSizeHintsAction;  
  24.   
  25.     QMenu *tabMenu;  
  26.     QMenu *splitHMenu;  
  27.     QMenu *splitVMenu;  
  28.   
  29.     QAction *windowModifiedAction;  
  30.   
  31. public:  
  32.     explicit ColorSwatch(const QString &colorName, QWidget *parent = 0, Qt::WindowFlags flags = 0);  
  33.   
  34.     QMenu *menu;  
  35.     void setCustomSizeHint(const QSize &size);  
  36.   
  37. protected:  
  38.     virtual void contextMenuEvent(QContextMenuEvent *event);  
  39.     virtual void resizeEvent(QResizeEvent *e);  
  40.   
  41. private:  
  42.     void allow(Qt::DockWidgetArea area, bool allow);  
  43.     void place(Qt::DockWidgetArea area, bool place);  
  44.   
  45. private slots:  
  46.     void changeClosable(bool on);  
  47.     void changeMovable(bool on);  
  48.     void changeFloatable(bool on);  
  49.     void changeFloating(bool on);  
  50.     void changeVerticalTitleBar(bool on);  
  51.     void updateContextMenu();  
  52.   
  53.     void allowLeft(bool a);  
  54.     void allowRight(bool a);  
  55.     void allowTop(bool a);  
  56.     void allowBottom(bool a);  
  57.   
  58.     void placeLeft(bool p);  
  59.     void placeRight(bool p);  
  60.     void placeTop(bool p);  
  61.     void placeBottom(bool p);  
  62.   
  63.     void splitInto(QAction *action);  
  64.     void tabInto(QAction *action);  
  65. };</span>  

我们来看看它的构造函数:

    explicit ColorSwatch(const QString &colorName, QWidget *parent = 0, Qt::WindowFlags flags = 0);

这里我们比较关注的是第一个参数,dockwidget的颜色,这一点从前面的运行效果也可以看出来,然后比较关注的就是第三个参数,主要设置QDockWidget的一些标志,我们可以看看它的实例化:


再来看看在自定义的类中定义了不少QAction,这些是上下文菜单中使用的,如下图,具体的使用方式就是根据QDockWidget的features()函数判断某些特性是否选中:



最后,我们还是用了之前介绍QDockWidget类时重点提到的两个函数:

(1)setWidget()


(2)setTitleBarWidget()


QMainWindow默认是把dock嵌套关闭的,即拖动QDockWidget时不能将被拖动的QDockWidget放到两个QDockWidget中间,通过QMainWindow成员函数,将参数设置为true解决此问题:

void QMainWindow::setDockNestingEnabled ( bool enabled )





【QT】QDockWidget控件的使用 QDockWidget控件的使用 阅读详情

相关推荐

QT之QDockWidget使用详解

一、描述 QDockWidget提供了dock widget的概念,也称为工具面板或实用工具窗口。停靠窗口是放置在QMainWindow中央小部件周围的停靠小部件区域中的次要窗口。如图所示: 标记处即为dockwidget可停靠位置,在QT中这部分的设置是用一个枚举来实现的,如图 可访问这些枚举的函数为: 其中 voidsetAllowedAreas(Qt::DockWidge...

qq_39295354的博客 3万+

QT中QDockWidget使用详解

QT中QDockWidget使用详解,QListWidget加入多张图片

aoxuestudy的专栏 1万+

uniapp运行钉钉小程序

因项目原因,公司需要在钉钉里面开发小程序。之前用uniapp开发过app,H5,小程序。还真没尝试过钉钉小程序,今天就简单的记录下uniapp运行钉钉小程序中的过程。

YL 2919

QDockWidget详解

QDockWidget类详解 【详细描述】 QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。 QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在 QMindow窗口周围的dock widget区域中的。 如

chenlong12580的专栏 7万+

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 538

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 246

【资料收集】客户端编程相关——Qt、MFC、Winform

UI界面编程框架:Qt、MFC、Winform 与后台通信机制:Libcurl、gsoap QT 博主、网站或专题 主题和地址 QPixmap 【原】QPixmap显示图片简介 【原】QImage与QPixmap完全解析 【论坛】QPixmap和QImage的区别 QDockWidget 【转】(十七)QDockWidget详...

xuejianhui 1023

基于 Simulink 的飞轮储能系统(Flywheel Energy Storage System, FESS)充放电协调控制实战教程

本教程详细介绍了基于Simulink的飞轮储能系统(FESS)建模与控制方法。系统采用永磁同步电机(PMSM)和背靠背变流器架构,包含机侧全速域矢量控制和网侧直流稳压控制。重点讲解了机电耦合建模、FOC控制算法实现、基于电压下垂的协调控制策略,以及混合储能系统设计思路。教程提供了MATLAB函数代码示例,并给出典型工况下的仿真波形分析指南,同时指出了常见问题解决方案。该模型可用于研究飞轮储能在调频、能量回收等场景的应用,为新能源消纳和微网稳定提供仿真工具。

MHD0815的博客 167

Qt学习之路(二)

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个铆接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40xuX9Pk-1679985388502)(…/图片资源/Qt/QMainWindow概述.png)]菜单栏(只能有一个)菜单栏类:QMenuBar。

默示MoS的博客 866

基于物联网设计的蜂箱智能监测系统设计

为解决传统养蜂业依赖人工、管理效率低下、干扰蜂群等问题,本项目设计并实现了一套基于物联网(IoT)的蜂箱智能监测系统。

685

【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析

Unity游戏制作,本篇文章介绍了复刻皇室战争玩法的一个自制小游戏,共有该游戏的两万字教程加制作过程,欢迎品尝! 世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。

努力前行,总会成为自己心中的那道光 12万+

Qt 停靠布局QDockWidget使用

Qt 停靠布局QDockWidget使用

随笔 8203

Claude Code 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例展示如何使用 Claude Code 配合 Python 的 `ezdxf` 库,从零开始生成专业级 CAD 机械图纸。我们将绘制一个完整的法兰盘零件图,包含主视图、俯视图、标注尺寸、粗糙度标记和标题栏,最终生成标准 DXF 文件,可直接在 AutoCAD 或 FreeCAD 中打开编辑。

yueyeguzhuo的专栏 894

【Qt笔记】QDockWidget控件详解

QDockWidget是Qt框架中的一个控件类,它提供了一个可停靠的面板,该面板可用于显示和编辑各种内容。

qq_52924376的博客 5248

RK3588 部署 YOLOv5s 实战:多线程加速从 16FPS 飙升到 120FPS(含性能优化)

因为RK3588包含了3个NPU核心,支持3个核心同时工作、双核合作、以及单核工作。我们可以使用线程池来加速。线程池是一种长街的并发编程模型,它用于管理和复用线程,以提高多线程程序的性能和效率。线程池通常包含以下主要组件:1、任务队列:任务队列用于存储待执行的任务。这些任务可以是函数、方法或其他需要多线程环境中执行的操作。2、线程池管理:线程池管理器负责创建、销毁和管理线程。它会监视任务队列中的任务,根据需要创建线程,执行任务,并在任务完成后将线程放回池中以供重用。

FJN110的博客 99

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

dockwidget自带的功能

总之,QDockWidget 提供了一个灵活和方便的方式来管理和组织多个子窗口部件,并将它们集中显示在一个主窗口中。QDockWidget 是一个带有标题栏和可关闭按钮的可停靠窗口小部件。

m0_57236802的博客 881

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

QDockWidget嵌套布局详解-实现Visual Studio布局

概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口。 Qt的嵌套布局由QDockWidget完成,用Qt Creator拖界面得到的dock布置形式比较固定,不能得想要的任意组合形式,要得到如下图所示的效果,后续布局必须通过代码来完成。 ps:这是自己没事写的一个数据可视化软件 下面说说如何实现完全

imxiangzi的专栏 3423

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

QT: QDockWidget使用详解

略主界面需要继承 QMainWindow 这个ui只需要一个空的界面就好 h文件 cpp文件

fuyouzhiyi的博客 3237

主窗口(03):【类】QDockWidget [官翻]

文章目录详细说明外观公共类型enum DockWidgetFeature属性公共函数构造和析构属性相关其他信号受保护的函数重写的受保护的函数演示代码 QDockWidget Class QDockWidget类提供了一个小部件,可以停靠在QMainWindow中,也可以作为桌面上的顶级窗口浮动。 Header #include < QDockWidget > qmake QT += widgets Inherits QWidget Inherited By

读书笔记 1849

Qt QDockWidget 控件 使用详解

本文详细的介绍了QDockWidget控件的各种操作,例如:设置停靠、设置默认位置、显示隐藏、设置Dock名字、设置Dock宽高、设置Dock隐藏标题栏、设置移动、浮动、关闭属性、Dock停靠移出信号槽、Dock可见信号槽等操作。 本系列QT全面详解文章目前共有二十篇目前正在不断的进行更新,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

断点 4674

详解QDockWidget的使用

在Qt应用程序界面设计中,QDockWidget是一种灵活且强大的组件,它允许开发者将独立的窗口区域(如工具栏、属性面板等)停靠在主窗口的边缘,或者作为浮动窗口显示。QSettings通常用于保存应用程序的设置和状态,这里用于存储窗口布局信息。通过QDockWidget和相应的布局保存与恢复功能,Qt应用程序能够更好地满足用户的个性化需求和界面偏好,从而提高整体用户体验。Qt提供了一种机制,允许开发者保存当前的QMainWindow及其包含的QDockWidget布局信息,并在后续运行时恢复这些布局。

简介 1582

Qt QDockWidget 深度解析:从基础使用到可保存布局的工程级主界面

Qt QDockWidget 工程应用指南 本文系统介绍了 Qt 中 QDockWidget 的工程级应用,重点解析其核心功能与专业界面构建方法。QDockWidget 是 Qt 专为工具型软件设计的窗口容器,支持附着主界面或独立浮动两种形态,具有拖拽、吸附、布局保存等特性。 文章详细阐述了: QDockWidget 必须与 QMainWindow 配合使用的基本结构 基础创建与添加方法 行为控制与区域限制 通过 addDockWidget 和 splitDockWidget 实现复杂布局 横向/纵向组合的

编程改变世界。想做一些改变世界的产品。感谢一键三连。 1844

【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明

浮动窗口是计算机图形界面中一种常见的窗口类型,它可以悬浮在其他窗口之上并且可以自由移动。浮动窗口通常被用于显示一些特定的信息或功能,例如实时监测数据、通知消息、弹出菜单等。浮动窗口可以在屏幕上的任何位置出现,用户可以根据需要将其拖动到合适的位置。QDockWidget是Qt中的一个窗口部件,它提供了一个可停靠的面板,可用于显示和编辑各种内容。QDockWidget可以在主窗口中创建并停靠在不同的位置,如左侧、右侧、顶部或底部。它可以通过拖动和放置的方式来改变其位置和大小。

小黄鸭的博客 3540

QT之 QDockWidget 应用总结

1. 简介 要用QDockWidget就不得不提QMainWindow。 1.1 QMainWindow The QMainWindow class provides a main application window. QMainWindow类提供一个主应用窗口 A main window provides a framework for building an application...

学之知之的博客 6445

qt 无框dockwidget_Qt学习:QDockWidget类详解 | 求索阁

QDockWidget类提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。Dock window是放置在QMindow窗口周围的dock widget区域中的。如下图所示:Dock windows可以在几个区域中移动,或者是悬...

weixin_39650994的博客 1270

QT基础之停靠窗口QDockWidget类

QT停靠窗口QDockWidget类简介,Demo例子和说明

墨1024 3608
上一篇: (十六)主窗口中的状态栏
下一篇: (十八)Qt中的输入组件
早起的虫儿灬
博客等级 码龄10年 54粉丝 114原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值