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可以放置的位置,也是枚举类型:
函数和方法讲解
设置停靠窗口的一般流程如下:
- 创建一个
QDockWidget对象的停靠窗体 - 设置此停靠窗体的属性,通常调用
setFeatures()以及setAllowedAreas() - 新建一个要插入停靠窗体的控件,比如
QListWidget、QTextEdit - 将控件插入停靠窗体,调用
QDockWidget的setWidget()方法 - 使用
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 | 左侧显示垂直标题栏 |
DockWidgetFeatureMask | Mask |
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_Mask | Mask |
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>中,实现在Core模块中。将调试或跟踪信息(debugging or tracing information)写出到device, file, string or console时都会使用QDebug。 此类的成员函数参考:https://doc…...
vue使用路由的query配置项时如何清除地址栏的参数
写vue项目时,如果想通过路由的query配置项把参数从一个组件传到另一个组件,但是又不希望?idxxx显示在地址栏(如:http://localhost:8080/test?idxxx的?idxxx),该怎么做: 举一个案例࿱…...
Redis-列表(List)
Redis列表(List) 介绍 单键多值Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)它的底层实际是个双向链表,对两端的操作性能很高,通过索…...
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的护眼台灯
台灯的白光或者暖光指的是台灯的色温,低色温的光线看起来发黄发红,高色温的光线发白发蓝。 如果灯光的光源是高品质光源,本身没有蓝光问题,那么色温的选择对护眼的影响是比较少的,更多的是对人学习工作状态,…...
Java时间类(一)-- SimpleDateFormat类
目录 1. SimpleDateFormat的构造方法: 时间模式字母: 2. SimpleDateFormat的常用方法: “工欲善其事,必先利其器”。学习时间类之前,需要先学习SimpleDateFormat类。 java.text.SimpleDateFormat类是以与语言环境有关的方式来格式...
07 Kubernetes 网络与服务管理
课件 Kubernetes Service是一个抽象层,用于定义一组Pod的访问方式和访问策略,其作用是将一组Pod封装成一个服务,提供一个稳定的虚拟IP地址和端口号,以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…...
并发编程之Atomic原子操作类
基本类型:AtomicInteger、AtomicBoolean、AtomicLong 引用类型:AtomicReference、AtomicMarkableReference、AtomicStampedReference 数组类型:AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray 对象属性原子修改器:…...
管家婆辉煌Ⅱ 13.32版安装方法
因管家婆辉煌版已经长期不更新,现已经出现蓝屏的问题,故此新开此贴,慢慢更新安装方法。 首先管家婆下载地址:http://www.grasp.com.cn/download.aspx?id116 先安装sql server 2008 下载后,运行安装,请注…...
常见的接口优化技巧思路
一、背景 针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1.批处理 批量思想:批量操作数据…...
【Java EE】-使用Fiddler抓包以及HTTP的报文格式
作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 在满园弥漫的沉静的光芒之前,一个人更容易看到时间,并看到自己的身影。——史铁生《我与地坛》 主要内容:使用FIddler抓包的…...
Java异步编程
Java异步编程 1、什么是java异步编程2、异步编程有什么作用3、异步编程常用于哪些业务4、异步编程的方式5、Async异步调用Async简介 1、什么是java异步编程 Java异步编程是一种处理并发问题的技术,它可以在执行耗时操作的同时,不阻塞主线程,…...
C++类与对象(二)——构造函数与析构函数
文章目录 一.类的默认6个成员函数二.构造函数1.引例2.构造函数的概念及特性 三.析构函数😋析构函数的特性 前言: 上篇文章初步认识了类以及类的相关知识,本篇将继续深入学习类与对象——类的默认6个成员函数: 一.类的默认6个成员函…...
c++标准模板(STL)(std::array)(四)
定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型,其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数…...
vue3计算属性
计算属性 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。推荐使用计算属性来描述依赖响应式状态的复杂逻辑 基础示例 不够好的示例 模板中使用了表达式,不够直观&…...
Java 中的访问修饰符有哪些(九)
Java 中的访问修饰符用于限制类、接口、字段和方法的访问范围,它们分别表示不同的访问控制级别。Java 中共有四种访问修饰符:public、protected、default 和 private。 public public 是最开放的访问修饰符,用于指定公共访问级别。被 publi…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 : 适配层…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
