首页 > 其他分享 >Qt之停靠窗口(QDockWidget)

Qt之停靠窗口(QDockWidget)

时间:2023-10-27 15:00:41浏览次数:24  
标签:pDock 窗口 Qt QDockWidget 停靠 dockWidget

一、QDockWidget概述

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

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

QDockWidget 的主要特点:

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

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

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

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

二、常用函数介绍

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

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

QDockWidget dockWidget("标题", &mainWindow);
QWidget *customWidget = new QWidget;
dockWidget.setWidget(customWidget);

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

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

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

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

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

dockWidget.setWindowTitle("My Dock Widget");

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

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

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

bool isFloating = dockWidget.isFloating();

7.close:关闭停靠窗口

dockWidget.close();

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

QAction *toggleAction = dockWidget.toggleViewAction();
toolBar->addAction(toggleAction);

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

QObject::connect(&dockWidget, &QDockWidget::topLevelChanged, [&](bool floating) {
    if (floating) {
        qDebug() << "窗口已浮动";
    } else {
        qDebug() << "窗口已停靠";
    }
});

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

三、示例代码如下

#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);
}

效果如下:  

标签:pDock,窗口,Qt,QDockWidget,停靠,dockWidget
From: https://www.cnblogs.com/TechNomad/p/17792379.html

相关文章

  • docker部署开源MQTT平台mosquitto
    一、安装docker在开始之前,确保你的系统上已经安装了Docker。Docker提供了一个开放的平台,可以在容器中打包、分发和运行应用程序。你可以从Docker官方网站下载和安装适合你操作系统的Docker版本。二、拉取MosquittoDocker镜像这里我们以阿里云的Ubuntu系统为例。想要在docker中部......
  • Qt和ffmpeg结合制作全能解码播放器
    #include<QCoreApplication>#include<QApplication>#include<QWidget>#include<QVBoxLayout>#include<QVideoWidget>#include<QAudioOutput>#include<QDebug>extern"C"{#include<libavformat/avfor......
  • Qt之分裂器(QSplitter)
    一、QSplitter概述QSplitter是Qt中的一个布局管理器,允许用户在应用程序窗口中创建可拖动的分隔器,以便调整多个子窗口或控件的大小。它是一种非常有用的布局管理器,用于创建可分隔的多个部分,通常用于分割、重新排列和管理用户界面中的多个区域。以下是有关QSplitter的详细介......
  • Linux下安装Qt6的问题及解决
    Linux下安装完Qt6,新建Qt/QtQuickCMake工程编译出现如下错误:Foundpackageconfigurationfile:Qt6Config.cmakebutitsetQt6FOUNDtoFALSEsopackage"Qt6"isconsideredtobeNOTFOUND.Reasongivenbypackage:FailedtofindrequiredQtcomponen"Quick&......
  • Qt Creator常用快捷键及技巧提升编码效率
    转:https://blog.csdn.net/luoyayun361/article/details/105431913https://blog.csdn.net/u_topian/article/details/130366561https://blog.csdn.net/Zeek_0114/article/details/98938547代码编辑1.定义触发片段打开工具->选项->文本编辑器->片段,右侧点击添加2///三个斜杠......
  • qt 设置背景图片,图片出现锯齿
    qt给控件添加背景图片,通过有3种方式background-image;border-image;image其中通常用border-image;image。使用border-image,会出现图片失真,锯齿状严重ui->pushButton->setStyleSheet(“QPushButton{border-image:url(:/images/XXX.png);}”);使用image,会有边框,不适合qpushBu......
  • 通讯 --- C# .NET CORE MQTT 心跳服务
    转自:https://www.cnblogs.com/hkzw/p/17689443.htmlMQTT服务可以自行学习,这里只是记录一下写的结果,粘贴即用。首先引入包 MQTTnet,注意这个包这里的代码是4.0一下版本我用的3.1.2版本的4.以上是另外的写法,该内容中4不支持我 直接下降版本到3.1.2可以了。如果你一......
  • ASP.NET Core 使用 MQTTnet 实现 MQTT 通讯协议
    转自:https://www.twle.cn/t/19383MQTT是啥呢?MQTT,英文全称 MessageQueuingTelemetryTransport,是一种基于 发布/订阅 模式的轻量级的消息传输协议,由IBM公司出品。物联网兴起后,MQTT因为够轻量,低带宽和低延时而被推上浪潮之巅。其实,MQTT几乎就是专门为网络受限设备、低......
  • Qt开发之图形视图
    一、GraphicsView框架结构Qt的GraphicsView框架是一个用于2D图形渲染和交互的框架,它为开发者提供了一种灵活的方式来创建自定义的图形界面和场景。以下是QtGraphicsView框架的主要组件和结构分析:场景(Scene):QGraphicsScene是GraphicsView的核心概念之一。场景充当图形项(Item)的......
  • Qt开发之获取文件元数据的信息
    效果展示:源码如下:头文件(.h)#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QWidget>#include<QLabel>#include<QLineEdit>#include<QPushButton>#include<QCheckBox>#include<QHBoxLayout>#include<QVBoxLayout>......