Qt主窗口 之:停靠/悬浮窗口(QDockWidget)

一、QDockWidget概述

QDockWidget 是 Qt 中的一个窗口部件,用于创建可停靠的窗口,通常用于构建多文档接口(MDI)或可定制的用户界面。QDockWidget 允许用户将窗口停靠在应用程序的主窗口周围,或将其拖动到独立的浮动窗口中。

以下是有关 QDockWidget 的详细介绍和使用方法:

QDockWidget 的主要特点:

  1. 停靠功能:QDockWidget 允许用户将窗口部件停靠在主窗口的各个位置,如左侧、右侧、上方或下方。

  2. 浮动窗口:用户还可以将 QDockWidget 拖动到独立的浮动窗口中。

  3. 可关闭:QDockWidget 可以关闭,允许用户根据需要隐藏或显示它。

  4. 自定义部件:你可以将自定义的部件放在 QDockWidget 中,以构建自定义的界面元素。

二、常用函数介绍

QDockWidget 类提供了一系列函数,用于配置和管理停靠式窗口的行为和外观。以下是一些常用的 QDockWidget 函数的介绍和使用方法:

1.setWidget:设置停靠窗口中的部件

1

2

3

QDockWidget dockWidget("标题", &mainWindow);

QWidget *customWidget = new QWidget;

dockWidget.setWidget(customWidget);

2.setAllowedAreas:设置允许停靠的区域

1

dockWidget.setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

3.setFeatures:设置停靠窗口的功能特性,如关闭按钮、可浮动等

1

dockWidget.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable);

4.setWindowTitle:设置停靠窗口的标题

1

dockWidget.setWindowTitle("My Dock Widget");

5.setVisible:设置停靠窗口的可见性

1

dockWidget.setVisible(true); // 显示停靠窗口

6.isFloating:检查停靠窗口是否在浮动状态

1

bool isFloating = dockWidget.isFloating();

7.close:关闭停靠窗口

1

dockWidget.close();

8.toggleViewAction:获取一个 QAction 对象,用于在工具栏中切换停靠窗口的可见性

1

2

QAction *toggleAction = dockWidget.toggleViewAction();

toolBar->addAction(toggleAction);

9.topLevelChanged 信号:在停靠窗口的浮动状态发生变化时触发

1

2

3

4

5

6

7

QObject::connect(&dockWidget, &QDockWidget::topLevelChanged, [&](bool floating) {

    if (floating) {

        qDebug() << "窗口已浮动";

    else {

        qDebug() << "窗口已停靠";

    }

});

这些函数可以帮助你配置 QDockWidget 控件的各种属性,包括设置停靠区域、标题、可见性、功能特性等。你还可以使用 toggleViewAction 函数来创建一个切换停靠窗口可见性的操作,以便用户可以通过工具栏切换窗口的显示状态。topLevelChanged 信号可以用于监测停靠窗口的浮动状态的变化。根据应用程序的需求,你可以使用这些函数来自定义停靠窗口的行为和外观。

三、示例代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#include "main_window.h"

#include <QDockWidget>

#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)

    : QMainWindow(parent)

{

    this->setWindowTitle("停靠窗口");

    this->setFixedSize(600, 400);

    QTextEdit *pTextEdit = new QTextEdit(this);

    pTextEdit->setText("主窗口测试");

    pTextEdit->setAlignment(Qt::AlignLeft);

    this->setCentralWidget(pTextEdit);

    //停靠窗口实现

    QDockWidget *pDock = new QDockWidget("停靠窗口1"this);

    pDock->setFeatures(QDockWidget::DockWidgetMovable);

    pDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    QTextEdit *pText1 = new QTextEdit(this);

    pText1->setText("你好");

    pDock->setWidget(pText1);

    this->addDockWidget(Qt::RightDockWidgetArea, pDock);

}

效果如下:  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

门控循环单元(GRU)

概述 门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09;由Junyoung Chung等人于2014年提出&#xff0c;原论文为《Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling》。GRU是循环神经网络&#xff08;Recurrent Neural Network, …

实现富文本的三部曲

1、引入 ueditor.config.js ueditor.all.min.js lang/zh-cn/zh-cn.js 2、编辑器显示处 id"content" <textarea id"content" name"content"></textarea> 3、底部 <script type"text/javascript"> //实例化编辑器 …

2024.3.30学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p295-p314 super关键字 super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 super细节和语法 访问父类的属性&#xff0c;但不能访问父类的private属性 super.属性名 访问父类的…

回溯算法|39.组合总和

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {if (sum > target) {return;}if (sum target) {result.push_back…

Flutter(踩坑)之Android sdkmanager tool not found

D:\Flutter\flutter\bin\flutter.bat doctor --verbose [√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.22631.3296], locale zh-CN)• Flutter version 1.2.1 at D:\Flutter\flutter• Framework revision 8661d8aecd (5 years ago), 2019-02-14 …

【C++航海王:追寻罗杰的编程之路】priority_queue(优先队列) | 容器适配器你知道哪些?

目录 1 -> priority_queue的介绍和使用 1.1 -> priority_queue的介绍 1.2 -> priority_queue的使用 1.3 -> priority_queue的模拟实现 2 -> 容器适配器 2.1 -> 什么是适配器 2.2 -> STL标准库中stack和queue的底层结构 2.3 -> deque的介绍 2.…

Flutter 全局控制底部导航栏和自定义导航栏的方法

1. 介绍 导航栏在移动应用中扮演着至关重要的角色&#xff0c;它是用户与应用之间进行导航和交互的核心组件之一。无论是简单的页面切换&#xff0c;还是复杂的应用导航&#xff0c;导航栏都能够帮助用户快速找到所需内容&#xff0c;提升用户体验和应用的易用性。 在移动应用…

Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)

What can I say? 2024年我还能说什么&#xff1f; Mamba out! 曼巴出来了&#xff01; 原文链接&#xff1a; [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记&#xff1a; What&#xff1a; Mamba: Linear-Time …

进程等待+替换

✨MyShell实现✨ c并发编程&#xff08;书籍&#xff09; ✨进程等待  ✨wait/waitpid   ✨代码示例  ✨coredump   ✨什么是coredump   ✨开启coredump功能   ✨示例代码   ✨退出码 ✨进程替换  ✨原理  ✨进程替换接口一览  ✨实现一个shell  ✨myshell反思…

单链表就地逆置

算法思想&#xff1a;构建一个带头结点的单链表L&#xff0c;然后访问链表中的每一个数据结点&#xff0c;将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…

【学习】软件科技成果鉴定测试有何作用

软件科技成果鉴定测试是针对软件进行项目申报、科技成果鉴定等相关目的进行的测试。软件测试报告可作为项目申报、科技成果鉴定等工作的依据之一。软件类科技成果鉴定测试从软件文档、功能性、使用技术等方面对软件系统进行符合性测试。其测试结果证明软件的质量是否符合技术合…

智能指针(C++11)

智能指针的使用 问题 我们在平时写程序的时候&#xff0c;有些情况下不可避免地会遇见内存泄露的情况。内存泄露是指因为疏忽或错误&#xff0c;造成程序未能释放已经不再使用的内存的情况。例如下面这个例子&#xff0c;内存泄漏不易被察觉。 int div() {int a, b;cin >…

Vue tree自定义滚动条位置

贴一张效果图&#xff0c;我的效果不方便贴出来 实现支持&#xff1a; 1、懒加载 2、普通加载 下面贴关键思想&#xff1a; document有一个获取element元素的方法。 let element document.getElementById(tree); let arr document.querySelectorAll(".nodelModel&quo…

【JDK常用的API】包装类

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

【IDEA】安装教程

目录 一、安装IDEA 二、激活IDEA 总结 一、安装IDEA 点击idea安装包->点击next->选择安装的路径->勾选创建桌面的快捷方式->勾选将bin目录添加到环境变量->勾选文件夹当做项目工程 打开下面这四个不勾选&#xff0c;勾选表示打开文件将以下面的格式打开 安装…

Python绘制线图之plt.plot()的介绍以及使用

在Python中plt.plot是matplotlib库中的一个函数,用于绘制点和线,并对其样式进行控制,下面这篇文章主要给大家介绍了关于Python绘制线图之plt.plot()的介绍以及使用的相关资料,需要的朋友可以参考下 plt.plot() 是Matplotlib库中用于绘制线图&#xff08;折线图&#xff09;的主…

YOLOv9改进策略 :主干篇 | 南开大学提出LSKNet,遥感旋转目标检测新SOTA ,ICCV 2023

💡💡💡本文改进内容: 动态调整特征提取骨干的感受野,以便更有效地处理被检测大小物体的不同的检测能力,也就是说可以有效提升检测数据集当中存在大小目标的检测能力 改进结构图如下: 《YOLOv9魔术师专栏》将从以下各个方向进行创新: 【原创自研模块】【多组合点优…

OpenEuler华为欧拉系统安装教程及联网配置

OpenEuler简介 openEuler是一款开源操作系统。当前openEuler内核源于Linux&#xff0c;支持鲲鹏及其它多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff0c;是由全球开源贡献者构建的高效、稳定、安全的开源操作系统&#xff0c;适用于数据库、大数据、云计算、人工智…

java入门学习Day01

本篇文章主要是学会如何使用IDEA&#xff0c;和运行第一个java文件。 java环境安装&#xff1a;Windows下Java环境配置教程_windows java环境配置-CSDN博客 IDEA安装&#xff1a;IDEA 2023.2.5 最新激活码,注册码&#xff08;亲测好用&#xff09; - 异常教程 以上两个链接…

安装VS2022社区版

Visual Studio 2022 平台的使用 1.Visual Studio 的下载地址&#xff1a; https://visualstudio.microsoft.com/zh-hans/downloads/ 2.安装步骤简要记录 耐心等待安装完成 参考链接&#xff1a;Visual Studio 2022安装教程(非常详细)&#xff0c;从零基础入门到精通&…