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


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt窗口 | 浮动窗口 | QDockWidget的使用及说明

文章编号:Qt 学习笔记 / 50

文章目录

  • Qt窗口 | 浮动窗口 | QDockWidget的使用及说明
    • 一、浮动窗口
      • 1. 什么是浮动窗口
    • 二、QDockWidget介绍
      • 1. 简介
      • 2. 常用属性
      • 3. 常用方法
    • 三、代码创建浮动窗口
      • 1. 创建浮动窗口
      • 2. 设置浮动窗口允许停靠的位置


一、浮动窗口

1. 什么是浮动窗口

浮动窗口是计算机图形界面中一种常见的窗口类型,它可以悬浮在其他窗口之上并且可以自由移动。浮动窗口通常被用于显示一些特定的信息或功能,例如实时监测数据、通知消息、弹出菜单等。浮动窗口可以在屏幕上的任何位置出现,用户可以根据需要将其拖动到合适的位置。


二、QDockWidget介绍

1. 简介

QDockWidget是Qt中的一个窗口部件,它提供了一个可停靠的面板,可用于显示和编辑各种内容。

QDockWidget可以在主窗口中创建并停靠在不同的位置,如左侧、右侧、顶部或底部。它可以通过拖动和放置的方式来改变其位置和大小。QDockWidget还可以嵌套在另一个QDockWidget内部,创建一个多级的停靠窗口布局。

2. 常用属性

titleBarWidget设置自定义的标题栏部件
features设置停靠窗口的功能,
可以使用QDockWidget的DockWidgetFeature枚举值
- DockWidgetClosable
- DockWidgetMovable
- DockWidgetFloatable
allowedAreas设置停靠窗口可以停靠的区域
可以使用Qt::DockWidgetArea枚举值
- LeftDockWidgetArea
- RightDockWidgetArea
- TopDockWidgetArea
- BottomDockWidgetArea
floating设置停靠窗口是否以浮动窗口的方式显示
widget设置停靠窗口中要显示的内容部件
objectName为停靠窗口设置唯一的对象名称,用于在代码中引用和操作该窗口

3. 常用方法

方法说明
setWidget(QWidget *widget)设置QDockWidget的内容部件
widget()获取QDockWidget的内容部件
setTitleBarWidget(QWidget *widget)设置QDockWidget的标题栏部件
titleBarWidget()获取QDockWidget的标题栏部件
setAllowedAreas(Qt::DockWidgetAreas areas)设置QDockWidget允许停靠的区域
allowedAreas()获取QDockWidget允许停靠的区域
setFloating(bool floating)设置QDockWidget是否浮动
isFloating()判断QDockWidget是否浮动
setMinimumSize(const QSize &size)设置QDockWidget的最小尺寸
setMaximumSize(const QSize &size)设置QDockWidget的最大尺寸
minimumSize()获取QDockWidget的最小尺寸
maximumSize()获取QDockWidget的最大尺寸
setWindowTitle(const QString &title)设置QDockWidget的窗口标题
windowTitle()获取QDockWidget的窗口标题

三、代码创建浮动窗口

1. 创建浮动窗口

浮动窗⼝的创建是通过 QDockWidget类 提供的构造⽅法 QDockWidget()函数 动态创建的

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //创建浮动窗口
    QDockWidget* dockwidget = new QDockWidget();
    //使用 addDockWidget 方法, 把浮动窗口加入到子窗口中
    this->addDockWidget(Qt::BottomDockWidgetArea,dockwidget);
    //设置窗口标题
    dockwidget->setWindowTitle("浮动窗口");
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行代码,中间的窗口就是浮动窗口
在这里插入图片描述

2. 设置浮动窗口允许停靠的位置

浮动窗⼝是位于中⼼部件的周围。可以通过 QDockWidget类 中提供 setAllowedAreas() 函数设置其
允许停靠的位置。

其中可以设置允许停靠的位置有:
• Qt::LeftDockWidgetArea 停靠在左侧
• Qt::RightDockWidgetArea 停靠在右侧
• Qt::TopDockWidgetArea 停靠在顶部
• Qt::BottomDockWidgetArea 停靠在底部
• Qt::AllDockWidgetAreas 以上四个位置都可停靠

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //创建浮动窗口
    QDockWidget* dockwidget = new QDockWidget();
    //使用 addDockWidget 方法, 把浮动窗口加入到子窗口中
    this->addDockWidget(Qt::BottomDockWidgetArea,dockwidget);
    //设置窗口标题
    dockwidget->setWindowTitle("浮动窗口");
    //设置窗口只允许左和上停靠
    dockwidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea);

}

MainWindow::~MainWindow()
{
    delete ui;
}

运行代码,浮动窗口只能在左和上边停靠
在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637559.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 3 组件基础与模板语法详解

title: Vue 3 组件基础与模板语法详解 date: 2024/5/24 16:31:13 updated: 2024/5/24 16:31:13 categories: 前端开发 tags: Vue3特性CompositionAPITeleportSuspenseVue3安装组件基础模板语法 Vue 3 简介 1. Vue 3 的新特性 Vue 3引入了许多新的特性&#xff0c;以提高框…

路由引入实验(华为)

思科设备参考&#xff1a;路由引入实验&#xff08;思科&#xff09; 技术简介 路由引入技术在网络通信中起着重要的作用&#xff0c;能够实现不同路由协议之间的路由传递&#xff0c;并在路由引入时部署路由控制&#xff0c;实现路径或策略的控制 实验目的 不同的路由协议之…

【全网最全】2024电工杯数学建模A题21页初步参考论文+py代码+保奖思路等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模A题21页初步参考论文py代码保奖思路等&#xff08;后续会更新成品论文&#xff09;「首先来看看目前已有的资料&#x…

yolov8seg 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快

之前写过yolov8seg部署&#xff0c;但在实际项目中没有真正的用&#xff0c;最近在项目尝试使用yolov8seg&#xff0c;把之前的yolov8目标检测的优化给同步到yolov8seg中。 特别说明&#xff1a;如有侵权告知删除&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在git…

一套车间生产管理和调度执行MES系统源码,采用springboot + vue-element+uniapp+mysql技术开发,适合二次开发项目使用。

MES系统源码&#xff0c;车间生产管理系统源码&#xff0c;商业源码&#xff0c;适合上项目 MES系统是制造企业中用于管理和监控生产过程的关键系统&#xff0c;它的核心功能包括生产调度、数据管理、计划排产管理、库存管理、质量管理、设备管理、采购管理、成本管理、项目看板…

《异常检测——从经典算法到深度学习》28 UNRAVEL ANOMALIES:基于周期与趋势分解的时间序列异常检测端到端方法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

TypeScript(持续更新中...)

1.TypeScript是什么&#xff1f; TypeScript是javaScript的超集。 2.使用TypeScript 1&#xff09;全局安装nodejs 2&#xff09;安装TypeScript编译器 npm i -g typescript 3.编译ts文件 //注意&#xff1a;需要在ts文件同级目录执行此命令&#xff0c;否则会报找不到…

Go语言(Golang)的开发框架

在Go语言&#xff08;Golang&#xff09;的开发中&#xff0c;有多种开发框架可供选择&#xff0c;它们各自具有不同的特点和优势。以下是一些流行的Go语言开发框架&#xff0c;选择Go语言的开发框架时&#xff0c;需要考虑项目需求、团队熟悉度、社区支持、框架性能和可维护性…

Java时间工具类(Date和LocalDateTime)

Date package com.qiangesoft.utils.date;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 日期工具类** author lq* date 2024-05-23*/ public class DateUtil {public static final String[] C…

vue从入门到精通(四):MVVM模型

一,MVVM MVVM&#xff08;Model–view–viewmodel&#xff09;是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑&#xff08;数据模型&#xff09;的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型&#xff0c;但是 Vue 的设…

nacos-opera(k8s)安装问题解决

整理一些关于k8s部署nacos出现的一些恶心的问题 网上说其他说的更改数据库连接都未解决。 在用nacos-opera想安装高可用nacos时连接mysql数据库报错: 报错具体项: No DataSource set 具体就是说没找到数据源。 第一个 检查一下nacos连接数据库配置 : 第二个 检查一下数据库…

2024 电工杯高校数学建模竞赛(B题)| 平衡膳食食谱 |建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用负载均衡&#xff0c;多目标规划等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

【MySQL数据库】CRUD 增 删 改 查 超详解,有这一篇就够了!

​ ​ &#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【MySQL】探秘&#xff1a;数据库世界的瑞士军刀 目录 ⚗️一.CRUD &#x1f9ea;二.新增&#xff08;Create&#xff09; &#x1f9eb;1.基本操作 &#x1f9ec;2.使用SELECT插入 &#x…

169. Majority Element

文章目录 题目描述(简单难度)解法一解法二 位运算摩尔投票法参考文献 题目描述(简单难度) 给一个数组&#xff0c;存在一个数字超过了半数&#xff0c;找出这个数。 解法一 这种计数问题&#xff0c;直接就会想到 HashMap&#xff0c;遍历过程中统计每个数字出现的个数即可。…

Python入门全系列教程(更新中……)

最近辞职了&#xff0c;有点时间&#xff0c;打算写一套Python入门的全系列教程&#xff0c;需要的人欢迎关注蹲守&#xff01;&#xff01;&#xff01; 【Python基础篇】&#xff1a;入门基础知识—轻松踏上编程巅峰&#xff01;" 【Python基础篇】—基本语句详解 【Py…

jenkins插件之xunit

分析测试工具执行的结果&#xff0c;并图形化&#xff0c;比如phpunit&#xff0c;phpstan,可分析junit格式的结果 安装jenkins插件 搜索xunit并安装 项目配置 配置 - Build Steps 您的项目 - 配置 - Build Steps, 新增 Run with timeout 超时时间根据实际情况配置 Build…

unidbg入门笔记

一、unidbg 介绍 unidbg 是凯神 在 2019 年初开源的一个轻量级模拟器&#xff0c;一个基于Java的跨平台解密引擎&#xff0c;专门用于动态分析和逆向工程应用程序。它可以模拟不同CPU架构、操作系统和指令集&#xff0c;从而使用户能够在一个统一的环境中分析各种不同类型的二…

Mac下QT开发环境搭建详细教程

QT Qt是一个跨平台的C应用程序框架&#xff0c;用于开发具有图形用户界面&#xff08;GUI&#xff09;的应用程序&#xff0c;同时也可用于开发非GUI程序&#xff0c;比如控制台工具和服务器。Qt是设计成通用、可移植和高效的&#xff0c;它广泛应用于全球的企业和开发者社区中…

Codigger编码场景介绍(二):驾驶舱场景(Cockpit)

Codigger&#xff0c;一个专为开发人员设计的工具&#xff0c;致力于为不同的开发场景提供最佳的切换体验。Codigger囊括了多种场景&#xff0c;如传统场景、调试场景、设计器场景、驾驶舱场景以及纯净场景等。在上一篇文章中&#xff0c;我们介绍了传统场景模式&#xff0c;今…

宠物空气净化器:过敏星人的终极武器,让猫毛无处藏身~

猫毛过敏者虽畏惧猫毛&#xff0c;但对猫的热爱让他们选择继续养猫。过敏反应通常由猫的皮屑、唾液和尿液中的蛋白质引发&#xff0c;这些颗粒在空气中传播&#xff0c;导致打喷嚏、咳嗽和皮肤红疹等症状。宠物空气净化器&#xff0c;专为去除猫毛、异味和消毒灭菌设计&#xf…