《八》QSplitter拆分器以及QDockWidget窗口详解

news/2024/5/19 17:22:38/

QSplitter简介

QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。

单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件,并使用insertWidget()或addWidget()添加它们。

常用方法 

 

默认情况下,QSplitter会动态调整其子元素的大小。如果您希望QSplitter仅在调整大小操作结束时调整子元素的大小, 那么调用setOpaqueResize(false)。

void setOpaqueResize(bool opaque = true)

将子部件的各自大小设置为列表中给定的值。

如果splitter是水平的,则这些值将以像素为单位设置每个小部件的宽度,从左到右。

如果splitter是垂直的,则从上到下设置每个小部件的高度

void setSizes(const QList<int> &list)

 示例:

//拆分窗口(分割窗口)QSplitter *spWindow=new QSplitter(Qt::Horizontal,0);QTextEdit *txtedit=new QTextEdit("左边",spWindow);//2,拆分右边部分窗口QSplitter *spRight=new QSplitter(Qt::Vertical,spWindow);QTextEdit *spteditup=new QTextEdit("右边上半部分窗口",spRight);QTextEdit *spteditdown=new QTextEdit("右边下半部分窗口",spRight);//3:QSplitter *sptext=new QSplitter(Qt::Vertical,spRight);QTextEdit *txteditext=new QTextEdit("测试",sptext);spWindow->setWindowTitle("Splitter类拆分窗口");spWindow->show();

QDockWidget简介

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

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

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)

 示例:

 先创建一个中心窗口,再创建其他部件:

QTextEdit *tedit=new QTextEdit(this);//定义QTextEdit对象作为主窗口tedit->setAlignment(Qt::AlignCenter);//放到中心setCentralWidget(tedit);//设为中心部件

创建窗口1:

QDockWidget *dw1=new QDockWidget("停靠窗口(一)",this);
//设置QDockWidget的特性为DockWidgetMovable,表示该窗口可以被移动。dw1->setFeatures(QDockWidget::DockWidgetMovable);dw1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
  1. 创建一个名为"停靠窗口(一)"的QDockWidget对象,并将其指针赋值给了dw1。
  2. 使用setFeatures函数设置了QDockWidget的特性为DockWidgetMovable,表示该窗口可以被移动。
  3. 使用setAllowedAreas函数设置了QDockWidget的允许停靠区域为左侧和右侧。

在窗口中创建一个文本框,在添加停靠部件,把文本框加到停靠窗口里面:

QTextEdit *qtedit1=new QTextEdit();dw1->setWidget(qtedit1);addDockWidget(Qt::RightDockWidgetArea,dw1);

第二个窗口也类似:

QDockWidget *dw2=new QDockWidget("停靠窗口(二)",this);dw2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);//关闭QTextEdit *Qtedit2=new QTextEdit();dw2->setWidget(Qtedit2);addDockWidget(Qt::RightDockWidgetArea,dw2);

解释:

1.创建一个名为"停靠窗口(二)"的QDockWidget对象,并将其添加到当前窗口中。

2.设置QDockWidget的特性,包括可关闭和可浮动。

3.创建一个QTextEdit对象作为QDockWidget的内容部件。

4.将QDockWidget添加到右侧停靠区域(Qt::RightDockWidgetArea)。

这段代码的作用是在当前窗口中创建一个可关闭和可浮动的停靠窗口,其中的内容部件是一个QTextEdit对象,并将其添加到右侧停靠区域。

结果:


http://www.ppmy.cn/news/1423390.html

相关文章

Java学习笔记零基础入门1

目录 第一章 Java概述 1.1 什么是程序 1.2 Java 技术体系平台 1.3 Java 重要特点 1.4 Java 的开发工具 4.1 工具选择 1.5 Java 运行机制及运行过程 5.1 Java 语言的特点&#xff1a;跨平台性 5.2 Java 核心机制-Java 虚拟机 [JVMjavavirtual machine] 1.6 什么是JDK&…

Spring Boot + 事务钩子函数,打造高效支付系统!

今天&#xff0c;我继续安利一个独门绝技&#xff1a;Spring 事务的钩子函数。 单纯的讲技术可能比较枯燥乏味。 接下来&#xff0c;我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。 一、案例背景 拿支付系统相关的业务来举例。在支付系统中&#xff0c;我们…

【WebSocket连接异常】前端使用WebSocket子协议传递token时,Java后端的正确打开方式!!!

文章目录 1. 背景2. 代码实现和异常发现3. 解决异常3.1 从 URL入手3.2 从 WebSocket子协议的使用方式入手&#xff08;真正原因&#xff09; 4. 总结&#xff08;仍然存在的问题&#xff09; 前言&#xff1a; 本篇文章记录的是使用WebSocket进行双向通信时踩过的坑&#xff0c…

flex吃干抹净

Flex 布局是什么&#xff1f; Flex 是 Flexible Box 的缩写&#xff0c;意为"弹性布局"&#xff0c;用来为盒状模型提供最大的灵活性。 .box{display: flex;//行内元素也可以使用flex布局//display: inline-flex; }display: flex; 使元素呈现为块级元素&#xff0c;…

蓝桥杯---数组分割

https://www.dotcpp.com/oj/problem3171.html 测试用例分析&#xff1a; 2 2 6 6 2 1 6 这代表有两个测试用例。 第一测试用例: 数组: [6, 6]长度: 2 分析 数组中的所有元素都是偶数&#xff0c;因此任意组合的和都将是偶数。可能的组合及其和&#xff1a; 空集: 和 0 …

数据结构书后习题

p17 1&#xff0c; 个人解答&#xff1a; int DeleteMinElem(SqList &L,int &min) {int j 0;if (L.length 0){printf("error!");return 0;}int min L.data[0];for (int i 1; i < L.length; i){if (L.data[i] < min){min L.data[i];j i;}}L.dat…

图像分割:Pytorch实现UNet++进行医学细胞分割

图像分割&#xff1a;Pytorch实现UNet进行医学细胞分割 前言相关介绍项目结构具体步骤准备数据集读取数据集设置并解析相关参数定义网络模型定义损失函数定义优化器训练验证 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#x…

MySQL高负载排查方法最佳实践(15/16)

高负载排查方法 CPU占用率过高问题排查 使用mpstat查看cpu使用情况。 # mpstat 是一款 CPU 性能指标实时展示工具 # 能展示每个 CPU 核的资源视情况&#xff0c;同时还能将资源使用情况进行汇总展示 # 如果CPU0 的 %idle 已经为 0 &#xff0c;说明此核已经非常繁忙# 打印所…

网络基础-基于TCP协议的Socket通讯

一、Socket通讯基于TCP协议流程图 UDP 的 Socket 编程相对简单些不在介绍。 二、 服务端程序启动 服务端程序要先跑起来&#xff0c;然后等待客户端的连接和数据。 服务端程序首先调用 socket() 函数&#xff0c;创建网络协议为 IPv4&#xff0c;以及传输协议为 TCP 的…

将Ubuntu18.04默认的python3.6升级到python3.8

1、查看现有的 python3 版本 python3 --version 2、安装 python3.8 sudo apt install python3.8 3、将 python3.6 和 3.8 添加到 update-alternatives sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --insta…

AIDE:自动驾驶目标检测的自动数据引擎

AIDE&#xff1a;自动驾驶目标检测的自动数据引擎 摘要IntroductionRelated WorksMethodData FeederModel Updater4 Experiments 摘要 自动驾驶车辆&#xff08;AV&#xff09;系统依赖于健壮的感知模型作为安全保证的基石。然而&#xff0c;道路上遇到的物体表现出长尾分布&a…

2024-4-18 群讨论:关于异步HttpClient如何测试验证

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号&#xff1a;hashcon&#xff0c;私信进群拉你 群友问题&#xff1a;群友想尽量快的将请求发到三方接口&#xff0c;不考虑三方接口的压力。如何开发并验证&#xff1f; 思路&#xff1a; 肯定要使用 WebClient 这种…

未来计算机的发展趋势是什么?

未来计算机的发展趋势是多方面的,涵盖了硬件、软件、体系结构以及计算范式等多个层面。以下是一些预期的趋势: 1. 量子计算: 随着量子理论的不断成熟和技术的进步,量子计算机将可能解决传统计算机难以处理的问题,比如药物发现、材料科学、复杂系统模拟等领域。量子计算的…

gpt-6有望成为通用工具

OpenAI CEO山姆奥特曼&#xff08;Sam Altman&#xff09;在最新的博客访谈中&#xff0c;提到gpt-6有望成为通用工具。 奥特曼还认为&#xff0c;目前的模型不够聪明&#xff0c;“使用GPT-2进行科学研究曾被认为是不切实际的想法。而如今&#xff0c;虽然人们使用GPT-4进行科…

程序员购车指南

哈喽大家好&#xff0c;我是咸鱼。 爱车可以说是大部分男人的天性&#xff0c;而我对汽车的热情却远不及对手表的钟爱&#xff08;痴迷劳力士&#xff09;。以至于我的朋友掏出车钥匙指着上面的苹果树标志跟我介绍奔驰 AMG 系列的强劲性能和马力时&#xff0c;我只能尽量假装自…

2024年第十七届 认证杯 网络挑战赛 (C题)| 云中的海盐 | 辐射传输方程 Stefan-Boltzmann分析 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看认证杯 网络挑战赛 (C题&#xff09;&#xff01…

总结SQL相对常用的几个字符函数

目录 字符的截取 substr() trim()、ltrim()、rtrim() 字符串的拼接 ||、 字符的大小写转换 upper(column_name):大写 lower(column_name):小写 字符替换 replace() 搜索字符 instr(column_name, substring_to_find,start,n_appearence) charindex(substring_to_fi…

【软考】UML中的图之用例图

目录 1. 说明2. 建模2.1 说明2.2 语境建模2.3 需求建模 3. 图示4. 组成部分 1. 说明 1.用例图&#xff08;Use Case Diagram&#xff09;。2.展现了一组用例、参与者&#xff08;Actor&#xff09;以及它们之间的关系。3.用例图通常包括以下的内容&#xff1a;用例、参与者、用…

uniapp开发App,手机顶部状态栏问题

问题&#xff1a;在使用uniapp开发手机App时&#xff0c;因为HBuildX创建的应用默认是沉浸式样式&#xff0c;如果去除自带的导航栏之后&#xff0c;页面会直通手机顶部状态栏&#xff0c;解决办法有一下几个 方法1&#xff1a;可以使用uniapp官方文档提供的解决方案 https://u…

java混淆的公司有哪些

一些提供 Java 混淆服务的公司包括&#xff1a; PreEmptive Solutions&#xff1a;PreEmptive Solutions 提供了一系列用于保护 Java 和 .NET 应用程序的工具&#xff0c;包括混淆、代码压缩、加密和漏洞检测等功能。 DexGuard&#xff1a;DexGuard 是 Guardsquare 公司推出的…