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

【Qt窗口】—— 浮动窗口

目录

1.1  浮动窗口的创建

1.2 设置停靠的位置

1.3 示例小结 


在Qt中,浮动窗口也称之为铆接部件,俗称为子窗口,浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核⼼部件的周围,可以有多个。

1.1  浮动窗口的创建

浮动窗口的创建是通过QDockWidget类提供的构造⽅法QDockWidget()函数动态创建的;⽰例如下:

//给主窗口添加一个子窗口
QDockWidget *dock = new QDockWidget("浮动窗口",this);
//使用addDockWidget方法,把浮动窗口添加到子窗口中
addDockWidget(Qt::BottomDockWidgetArea,dock);

结果展示如下:

1.2 设置停靠的位置


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

  • Qt::LeftDockWidgetArea   停靠在左侧
  • Qt::RightDockWidgetArea  停靠在右侧
  • Qt::TopDockWidgetArea  停靠在顶部
  • Qt::BottomDockWidgetArea   停靠在底部
  • Qt::AllDockWidgetAreas  以上四个位置都可停靠

示例如下:设置 浮动窗口只允许上下停靠

//设置浮动窗口只允许上下停靠
dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

 子窗口拉动到左侧则不会嵌入到边框里面



1.3 示例小结 

    //给主窗口添加一个子窗口QDockWidget *dock = new QDockWidget();this->addDockWidget(Qt::LeftDockWidgetArea,dock);//浮动窗口也是可以设置标题的dock->setWindowTitle("这是一个浮动窗口");//给浮动窗口内部,添加一些其他的控件//提示:不能直接给这个浮动窗口添加子控件,而是需要创建出一个单独的QWidget,把需要添加的放入其中//然后把这个QWidget设置到dock中QWidget* container = new QWidget();dock->setWidget(container);//创建布局管理器,把其设置到QWidget中QVBoxLayout* layout = new QVBoxLayout();container->setLayout(layout);//创建其他控件放入里面QPushButton* button = new QPushButton("这是一个button");QLabel* label = new QLabel("这是一个label");layout->addWidget(button);layout->addWidget(label);//设置浮动窗口只允许上下停靠dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

结果输出展示:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • DARKTIMES集成到Sui,带来中世纪格斗大逃杀游戏体验
  • 【教程】实测np.fromiter 和 np.array 的性能
  • GCViT实战:使用GCViT实现图像分类任务(一)
  • Django+vue自动化测试平台(29)--测试平台集成playwright录制pytest文件执行
  • LeetCode 算法:杨辉三角 c++
  • Python——类和对象、继承和组合
  • 软考:软件设计师 — 17.程序设计语言与语言处理程序基础
  • IDEA: Html代码格式化
  • 【基础】Three.js中添加操作面板,GUI可视化调试(附案例代码)
  • Java-多线程IO工具类
  • MySQL入门学习-对系统数据库的常用查询
  • midwayjs 框架使用 rabbitmq 消息延迟
  • ES 根据条件删除文档
  • 【Python入门】第5节 数据容器
  • 分布式云扩展 AI 边缘算力,助力用户智能化创新
  • 网络传输文件的问题
  • JS 中的深拷贝与浅拷贝
  • 【刷算法】从上往下打印二叉树
  • 【译】理解JavaScript:new 关键字
  • C# 免费离线人脸识别 2.0 Demo
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • js中forEach回调同异步问题
  • Node项目之评分系统(二)- 数据库设计
  • SSH 免密登录
  • 每天10道Java面试题,跟我走,offer有!
  • 前端js -- this指向总结。
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用common-codec进行md5加密
  • 写给高年级小学生看的《Bash 指南》
  • Python 之网络式编程
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (2022 CVPR) Unbiased Teacher v2
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (每日一问)基础知识:堆与栈的区别
  • (七)理解angular中的module和injector,即依赖注入
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十八)SpringBoot之发送QQ邮件
  • (一)插入排序
  • ***检测工具之RKHunter AIDE
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net 6.0 处理跨域的方式
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .Net 执行Linux下多行shell命令方法
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • .net中的Queue和Stack
  • [ C++ ] STL---仿函数与priority_queue
  • [023-2].第2节:SpringBoot中接收参数相关注解
  • [Android] 修改设备访问权限
  • [Android]如何调试Native memory crash issue
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作