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

QT停靠窗口QDockWidget类

QT停靠窗口QDockWidget类

    • QDockWidget类简介
    • 函数和方法讲解

QDockWidget类简介

QDockWidget 类提供了一个部件,它可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。

QDockWidget 提供了停靠窗口部件的概念,也称为工具面板或实用程序窗口。 停靠窗口是位于 QMainWindow 中央部件周围的停靠部件区域中的辅助窗口。

停靠窗口可以在其当前区域内移动,移动到新区域或者浮动(例如,取消停靠)。 QDockWidget的 API 允许程序员限制停靠部件的移动、浮动和关闭,以及它们可以放置的区域的能力。

QDockWidget 由标题栏和内容区域组成。标题栏显示停靠窗口部件的窗口标题、浮动按钮和关闭按钮。根据 QDockWidget 的状态,浮动和关闭按钮可能被禁用或根本不显示。标题栏和按钮的视觉外观取决于使用的样式。QDockWidget可以作为它子窗口部件的封装,通过setWidget()设置子窗口部件。自定义的尺寸提示,最小和最大化尺寸已经尺寸策略都必须由子窗口部件来实现。QDockWidget会遵守它们,调整它自己的限制包括框架和工具栏。我们不应该为QDockWidget设置尺寸限制,因为它们根据QDockWidget是否锁住而改变,一个锁住的QDockWidget窗口部件不包括框架和小的工具栏。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0R46lf3M-1682740086615)(Pictures/QT基础之停靠窗口QDockWidget类/B_QT基础之停靠窗口QDockWidget类.PNG)]

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

函数和方法讲解

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

  1. 创建一个QDockWidget对象的停靠窗体
  2. 设置此停靠窗体的属性,通常调用 setFeatures()以及 setAllowedAreas()
  3. 新建一个要插入停靠窗体的控件,比如 QListWidgetQTextEdit
  4. 将控件插入停靠窗体,调用QDockWidgetsetWidget()方法
  5. 使用 addDockWidget()方法在MainWindow中加入此停靠窗体
    setWindowTitle(tr("QT基础之停靠窗口QDockWidget类"));QTextEdit *textEdit = new QTextEdit(this);textEdit->setText(tr("主窗口"));textEdit->setAlignment(Qt::AlignCenter);this->setCentralWidget(textEdit); // 设置 textEdit 为主窗口的中央窗体// 停靠窗口1// 步骤1 创建一个`QDockWidget`对象的停靠窗体QDockWidget *dock1 = new QDockWidget(tr("停靠窗口1"),this);// 步骤2 设置此停靠窗体的属性,通常调用 `setFeatures()`以及 `setAllowedAreas()`dock1->setFeatures(QDockWidget::DockWidgetMovable); // 可移动dock1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); // 可 左侧停靠 和 右侧停靠// 步骤3 新建一个要插入停靠窗体的控件,比如 `QListWidget`、`QTextEdit`QTextEdit *textEdit1 = new QTextEdit(this);textEdit1->setText(tr("停靠窗口1,可移动到左侧停靠和右侧停靠"));// 步骤4 将控件插入停靠窗体,调用`QDockWidget`的`setWidget()`方法dock1->setWidget(textEdit1);// 步骤5 使用 `addDockWidget()`方法在`MainWindow`中加入此停靠窗体this->addDockWidget(Qt::RightDockWidgetArea,dock1);// 停靠窗口2// 步骤1QDockWidget *dock2 = new QDockWidget(tr("停靠窗口2"),this);// 步骤2dock2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); // 可关闭 可浮动// 步骤3QTextEdit *textEdit2 = new QTextEdit(this);textEdit2->setText(tr("停靠窗口2,可关闭 可浮动"));// 步骤4dock2->setWidget(textEdit2);// 步骤5this->addDockWidget(Qt::RightDockWidgetArea,dock2);// 停靠窗口3// 步骤1QDockWidget *dock3 = new QDockWidget(tr("停靠窗口3"),this);// 步骤2dock3->setFeatures(QDockWidget::AllDockWidgetFeatures); // 可移动 可关闭 可浮动// 步骤3QTextEdit *textEdit3 = new QTextEdit(this);textEdit3->setText(tr("停靠窗口3,可移动 可关闭 可浮动"));// 步骤4dock3->setWidget(textEdit3);// 步骤5this->addDockWidget(Qt::RightDockWidgetArea,dock3);

setFeatures(QDockWidget::DockWidgetFeatures features)

设置停靠窗体的特性

QDockWidget::DockWidgetFeatures 指停靠窗口的特性

    enum DockWidgetFeature {DockWidgetClosable    = 0x01,DockWidgetMovable     = 0x02,DockWidgetFloatable   = 0x04,DockWidgetVerticalTitleBar = 0x08,DockWidgetFeatureMask = 0x0f,AllDockWidgetFeatures = DockWidgetClosable|DockWidgetMovable|DockWidgetFloatable, // ### Qt 6: removeNoDockWidgetFeatures  = 0x00,Reserved              = 0xff};
特性说明
DockWidgetClosable停靠窗体可关闭
DockWidgetMovable停靠窗体可移动
DockWidgetFloatable停靠窗体可浮动
DockWidgetVerticalTitleBar左侧显示垂直标题栏
DockWidgetFeatureMaskMask
AllDockWidgetFeatures可关闭 可移动 可浮动
NoDockWidgetFeatures不可关闭 不可移动 不可浮动

setAllowedAreas(Qt::DockWidgetAreas areas)

设置停靠窗体可停靠区域

Qt::DockWidgetAreas指可停靠区域

    enum DockWidgetArea {LeftDockWidgetArea = 0x1,RightDockWidgetArea = 0x2,TopDockWidgetArea = 0x4,BottomDockWidgetArea = 0x8,DockWidgetArea_Mask = 0xf,AllDockWidgetAreas = DockWidgetArea_Mask,NoDockWidgetArea = 0};
特性说明
LeftDockWidgetArea可在主窗口左侧停靠
RightDockWidgetArea可在主窗口右侧停靠
TopDockWidgetArea可在主窗口顶部停靠
BottomDockWidgetArea可在主窗口底部停靠
DockWidgetArea_MaskMask
AllDockWidgetAreas可在任意部位停靠(上面四个)
NoDockWidgetArea只可停靠在插入出

相关文章:

QT停靠窗口QDockWidget类

QT停靠窗口QDockWidget类 QDockWidget类简介函数和方法讲解 QDockWidget类简介 QDockWidget 类提供了一个部件,它可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。 QDockWidget 提供了停靠窗口部件的概念,也称为工具面板或实用程序窗口。 停靠窗…...

【LeetCode】139. 单词拆分

139. 单词拆分(中等) 思路 首先将大问题分解成小问题: 前 i 个字符的子串,能否分解成单词;剩余子串,是否为单个单词; 动态规划的四个步骤: 确定 dp 数组以及下标的含义 dp[i] 表示 s…...

【三维重建】NeRF原理+代码讲解

文章目录 一、技术原理1.概览2.基于神经辐射场(Neural Radiance Field)的体素渲染算法3.体素渲染算法4.位置信息编码(Positional encoding)5.多层级体素采样 二、代码讲解1.数据读入2.创建nerf1.计算焦距focal与其他设置2.get_emb…...

IntelliJ IDEA 社区版2021.3配置SpringBoot项目详细教程及错误解决方法

目录 一、SpringBoot的定义 二、Spring Boot 优点 三、创建一个springboot的项目 四、使用IDEA创建SpringBoot失败案例 一、SpringBoot的定义 Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。 Spring Boot 翻…...

Qt中QDebug的使用

QDebug类为调试信息(debugging information)提供输出流。它的声明在<QDebug>中&#xff0c;实现在Core模块中。将调试或跟踪信息(debugging or tracing information)写出到device, file, string or console时都会使用QDebug。 此类的成员函数参考&#xff1a;https://doc…...

vue使用路由的query配置项时如何清除地址栏的参数

写vue项目时&#xff0c;如果想通过路由的query配置项把参数从一个组件传到另一个组件&#xff0c;但是又不希望?idxxx显示在地址栏&#xff08;如&#xff1a;http://localhost:8080/test?idxxx的?idxxx&#xff09;&#xff0c;该怎么做&#xff1a; 举一个案例&#xff1…...

Redis-列表(List)

Redis列表(List) 介绍 单键多值Redis 列表是简单的字符串列表&#xff0c;按照插入顺序排序。你可以添加一个元素到列表的头部&#xff08;左边&#xff09;或者尾部&#xff08;右边&#xff09;它的底层实际是个双向链表&#xff0c;对两端的操作性能很高&#xff0c;通过索…...

ripro主题修改教程-首页搜索框美化教程

先看效果图: 我们来看怎么实现: 1、找到wp-content/themes/ripro/assets/css/diy.css并将下面的内容整体复制进去并保存 /*首页搜索框*/ .bgcolor-fff {background-color: #fff; } .row,.navbar .menu-item-mega>.sub-menu{margin-left:-10px;margin-right:-10px;} .home…...

写作业用白光还是暖光?盘点色温4000K的护眼台灯

台灯的白光或者暖光指的是台灯的色温&#xff0c;低色温的光线看起来发黄发红&#xff0c;高色温的光线发白发蓝。 如果灯光的光源是高品质光源&#xff0c;本身没有蓝光问题&#xff0c;那么色温的选择对护眼的影响是比较少的&#xff0c;更多的是对人学习工作状态&#xff0c…...

Java时间类(一)-- SimpleDateFormat类

目录 1. SimpleDateFormat的构造方法: 时间模式字母: 2. SimpleDateFormat的常用方法: “工欲善其事,必先利其器”。学习时间类之前,需要先学习SimpleDateFormat类。 java.text.SimpleDateFormat类是以与语言环境有关的方式来格式...

07 Kubernetes 网络与服务管理

课件 Kubernetes Service是一个抽象层&#xff0c;用于定义一组Pod的访问方式和访问策略&#xff0c;其作用是将一组Pod封装成一个服务&#xff0c;提供一个稳定的虚拟IP地址和端口号&#xff0c;以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…...

并发编程之Atomic原子操作类

基本类型&#xff1a;AtomicInteger、AtomicBoolean、AtomicLong 引用类型&#xff1a;AtomicReference、AtomicMarkableReference、AtomicStampedReference 数组类型&#xff1a;AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray 对象属性原子修改器&#xff1a…...

管家婆辉煌Ⅱ 13.32版安装方法

因管家婆辉煌版已经长期不更新&#xff0c;现已经出现蓝屏的问题&#xff0c;故此新开此贴&#xff0c;慢慢更新安装方法。 首先管家婆下载地址&#xff1a;http://www.grasp.com.cn/download.aspx?id116 先安装sql server 2008 下载后&#xff0c;运行安装&#xff0c;请注…...

常见的接口优化技巧思路

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1.批处理 批量思想&#xff1a;批量操作数据…...

【Java EE】-使用Fiddler抓包以及HTTP的报文格式

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 分享: 在满园弥漫的沉静的光芒之前&#xff0c;一个人更容易看到时间&#xff0c;并看到自己的身影。——史铁生《我与地坛》 主要内容&#xff1a;使用FIddler抓包的…...

Java异步编程

Java异步编程 1、什么是java异步编程2、异步编程有什么作用3、异步编程常用于哪些业务4、异步编程的方式5、Async异步调用Async简介 1、什么是java异步编程 Java异步编程是一种处理并发问题的技术&#xff0c;它可以在执行耗时操作的同时&#xff0c;不阻塞主线程&#xff0c;…...

C++类与对象(二)——构造函数与析构函数

文章目录 一.类的默认6个成员函数二.构造函数1.引例2.构造函数的概念及特性 三.析构函数&#x1f60b;析构函数的特性 前言&#xff1a; 上篇文章初步认识了类以及类的相关知识&#xff0c;本篇将继续深入学习类与对象——类的默认6个成员函数&#xff1a; 一.类的默认6个成员函…...

c++标准模板(STL)(std::array)(四)

定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型&#xff0c;其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数…...

vue3计算属性

计算属性 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。推荐使用计算属性来描述依赖响应式状态的复杂逻辑 基础示例 不够好的示例 模板中使用了表达式&#xff0c;不够直观&…...

Java 中的访问修饰符有哪些(九)

Java 中的访问修饰符用于限制类、接口、字段和方法的访问范围&#xff0c;它们分别表示不同的访问控制级别。Java 中共有四种访问修饰符&#xff1a;public、protected、default 和 private。 public public 是最开放的访问修饰符&#xff0c;用于指定公共访问级别。被 publi…...

MAI-UI-8B在电商场景的应用:商品详情页自动编辑

MAI-UI-8B在电商场景的应用&#xff1a;商品详情页自动编辑 1. 电商编辑的痛点与MAI-UI-8B的解决方案 电商运营每天面临大量商品详情页的编辑工作&#xff1a;修改价格、更新库存、调整促销信息、优化商品描述等。传统方式需要人工逐项修改&#xff0c;不仅效率低下&#xff…...

游戏开发者利器:Kook Zimage 真实幻想 Turbo 快速生成角色原画

游戏开发者利器&#xff1a;Kook Zimage 真实幻想 Turbo 快速生成角色原画 1. 引言&#xff1a;游戏美术创作的新选择 想象一下这样的场景&#xff1a;凌晨三点&#xff0c;你的游戏开发团队正在赶进度&#xff0c;美术组已经连续加班两周&#xff0c;但主角角色的概念设计稿…...

Pixel Dimension Fissioner多场景:直播脚本→弹幕互动话术→短视频切片文案自动裂变

Pixel Dimension Fissioner多场景&#xff1a;直播脚本→弹幕互动话术→短视频切片文案自动裂变 1. 工具介绍 Pixel Dimension Fissioner&#xff08;像素语言维度裂变器&#xff09;是一款基于MT5-Zero-Shot-Augment核心引擎构建的创意文本增强工具。与传统AI工具不同&#…...

高效数据迁移:利用kettle实现CSV与Excel文件快速导入数据库

1. 为什么选择Kettle处理数据迁移&#xff1f; 最近接手了一个数据迁移项目&#xff0c;需要把几十万条CSV和Excel格式的销售记录导入到MySQL数据库。刚开始尝试用Python脚本处理&#xff0c;结果发现字段映射特别麻烦&#xff0c;还经常遇到编码问题。后来改用Kettle&#xff…...

手把手教你用Comsol模拟超声空化气泡:从模型搭建到网格划分的完整流程

手把手教你用Comsol模拟超声空化气泡&#xff1a;从模型搭建到网格划分的完整流程 超声空化气泡的仿真在医学超声治疗、工业清洗等领域有着广泛应用。作为一名长期使用Comsol进行多物理场仿真的工程师&#xff0c;我经常遇到初学者询问如何准确模拟这一复杂现象。本文将分享一套…...

使用yolov26实现目标检测

一、创建虚拟环境 打开anaconda&#xff0c;选择Anaconda Prompt。 创建一个新的python环境&#xff0c;这里以yolov26命名新建环境&#xff0c;python使用3.12。 conda create -n yolo26 python3.12 回车后出现新建环境提醒输入 y 继续&#xff0c;耐心等待全部下载完成后自…...

新能源汽车电池壳体孔深光学3D轮廓测量-激光频率梳3D轮廓技术

1 引言航空航天支架孔是飞行器结构连接、部件装配的核心精密结构&#xff0c;其孔深精度直接决定支架连接强度、装配协调性及结构稳定性&#xff0c;进而影响航空航天设备的飞行安全性与运行可靠性。传统测量技术如接触式探针测量易划伤孔壁精密表面及涂层&#xff0c;导致结构…...

PDF表格数据处理避坑指南:为什么你的pdfplumber提取不到数据?

PDF表格数据提取实战&#xff1a;避开pdfplumber的5大隐形陷阱 第一次用pdfplumber提取PDF表格时&#xff0c;我盯着屏幕上那堆错位的文字和缺失的边框&#xff0c;差点以为下载了假的Python库。直到后来才发现&#xff0c;问题从来不在工具本身&#xff0c;而在于PDF这种"…...

4μm精度+0.02mm点距:先临三维OptimScan Q12 HD计量级蓝光三维扫描仪为精密测量而生

在精密制造领域&#xff0c;工件几何尺寸的偏差直接影响产品良率&#xff1b;在高端文博领域&#xff0c;高精度三维数据是文物数字化保护与研究的基础。先临三维推出OptimScan Q12 HD计量级蓝光三维扫描仪&#xff0c;以4μm测量精度与细微特征高保真还原为核心优势&#xff0…...

Zed IDE新大招:Git 三合一 Picker,告别“找功能“焦虑症!

推荐阅读 Zed IDE 又整新活&#xff1a;确实比 VS Code 优雅丝滑&#xff01; Zed IDE 又扔出了一个新玩具&#xff0c;确实比 VS Code 清新优雅&#xff01; Zed 推出分栏 Diff &#xff1a;比 VSCode 更快、更智能的Git体验&#xff01; Zed IDE 官宣ACP&#xff1a;一…...