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

Qt 布局(QSplitter 类QDockWidget 类) 总结

一、QSplitter 类(窗口分割)

QSplitter类是一个Qt框架提供的基础窗口控件类,用于分割窗口,使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见,经常用于划分窗口区域,使得程序可以同时显示多个子控件。

QSplitter类的主要特点包括:

  • 可以水平或垂直分割窗口区域
  • 可以通过拖动分隔条来调整子控件的大小
  • 可以在子控件之间添加小部件,如按钮、标签、文本框等

QSplitter类是QWidget的子类,因此它可以嵌套在其他QWidget中以实现更复杂的用户界面设计。开发者可以使用QSplitter类创建多个子控件,并通过分隔条调整这些控件的相对大小,以便在同一个窗口中显示多个控件。

QSplitter类提供了一些方便的方法和信号,例如resize()方法、splitterMoved()信号等,可以让开发者方便地管理和操作QSplitter控件。开发者可以在QSplitter的基础上进行二次开发,以满足自己的需求,或者使用已有的QSplitter控件,以提高开发效率。

案例分析:以实现下图示例

代码示例:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;// w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"#include <QSplitter>
#include <QTextEdit>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{// 1:拆分窗口(分割窗口、分裂窗口布局)QSplitter *spMainWindow=new QSplitter(Qt::Horizontal,0);QTextEdit *txteditmain=new QTextEdit("左边主窗口",spMainWindow);// 2:拆分右边部分窗口QSplitter *spRight=new QSplitter(Qt::Vertical,spMainWindow);QTextEdit *txteditup=new QTextEdit("右边上部分窗口",spRight);QTextEdit *txteditdown=new QTextEdit("右边下部分窗口",spRight);// 3:QSplitter *sptest=new QSplitter(Qt::Vertical,spRight);QTextEdit *txtedittest=new QTextEdit("罗小白",sptest);// 4:QSplitter *sptestend=new QSplitter(Qt::Horizontal,spMainWindow);QTextEdit *txtedittestend=new QTextEdit("广东话事人",sptestend);spMainWindow->setWindowTitle("Splitter类拆分窗口测试");spMainWindow->show();}MainWindow::~MainWindow()
{
}

二、QDockWidget 类 (停靠窗口)

QDockWidget 类是 Qt 框架中的一个窗口部件类,可以用于创建具有可停靠属性的子窗口。它可以被放置在 QMainWindow 窗口中,并且可以被用户动态地沿着主窗口的边缘移动,或者可以被固定在主窗口中。 QDockWidget 类还提供了一些其他功能,例如标题栏、关闭按钮、浮动按钮等。

使用 QDockWidget 类创建可停靠的子窗口非常简单,只需要创建一个 QDockWidget 对象并将其添加到 QMainWindow 窗口中即可。下面是一个使用 QDockWidget 类创建可停靠子窗口的示例代码:

QMainWindow* mainWindow = new QMainWindow();
QDockWidget* dockWidget = new QDockWidget("Dock Widget", mainWindow);
dockWidget->setWidget(new QWidget());
mainWindow->addDockWidget(Qt::RightDockWidgetArea, dockWidget);

在这个例子中,我们首先创建了一个 QMainWindow 对象,然后创建了一个 QDockWidget 对象,并设置了其标题为 "Dock Widget"。接着,我们将一个 QWidget 对象设置为 QDockWidget 对象的主窗口部件,并将 QDockWidget 对象添加到 QMainWindow 窗口的右边缘。

最后,需要注意的是,QDockWidget 类还提供了一些其他的方法和信号,例如 setAllowedAreas() 方法和 dockLocationChanged() 信号等,可以用来控制可停靠子窗口的行为和状态。

案例分析:以实现下图示例

代码示例:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();public:void DockWidgetFunc();};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"#include <QTextEdit>
#include <QDockWidget>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{DockWidgetFunc();}MainWindow::~MainWindow()
{
}void MainWindow::DockWidgetFunc()
{setWindowTitle("QDockWidget类停靠窗口测试.");QTextEdit *tedit=new QTextEdit(this); // 定义QTextEdit对象作为主窗口tedit->setText("刘德华 吴彦祖");tedit->setAlignment(Qt::AlignCenter);setCentralWidget(tedit); //将编辑框控件设置为主窗口的中央窗体// 创建停靠窗口1QDockWidget *dw1=new QDockWidget("停靠窗口(一)",this);dw1->setFeatures(QDockWidget::DockWidgetMovable); // 可移动特性dw1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);QTextEdit *qtedit1=new QTextEdit();qtedit1->setText("刘德华(Andy Lau),1961年9月27日出生于香港新界大埔镇泰亨村,华语影视男演员、歌手、制片人、作词人。1981年出演电影处女作《彩云曲》。1983年主演的武侠剧《神雕侠侣》在香港取得62点的收视纪录。1985年发行首张个人专辑《只知道此刻爱你》。1990年凭借专辑《可不可以》在歌坛获得关注;同年主演爱情片《天若有情》。1994年获得十大劲歌金曲最受欢迎男歌星奖。1995年在央视春晚上演 ..");dw1->setWidget(qtedit1);addDockWidget(Qt::RightDockWidgetArea,dw1);// 创建停靠窗口2QDockWidget *dw2=new QDockWidget("停靠窗口(二)",this);dw2->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); // 关闭 浮动QTextEdit *qtedit2=new QTextEdit();qtedit2->setText("吴彦祖(Daniel Wu),1974年9月30日出生于美国旧金山,华语影视男演员、导演、制片人,毕业于美国俄勒冈大学。1998年,因出演个人首部电影作品《美少年之恋》进入演艺圈;同年,凭借文艺片《玻璃之城》提名第18届香港电影金像奖最佳新演员 [1-2]。2001年,主演文艺片《游园惊梦》 [3] 。2003年,首次担任监制并主演了惊悚片《妖夜回廊》,凭该片首次提名第40届台湾电影金马奖最佳男主角 [4] 。2004年,因出演动作片《新警察故事》中关祖一角受到广泛关注,并凭借该角色获得第41届台湾电影金马奖最佳男配角奖 [5] 。2005年,凭借动作片《旺角黑夜》首次提名第24届香港电影金像奖最佳男主角。");dw2->setWidget(qtedit2);addDockWidget(Qt::RightDockWidgetArea,dw2);}

相关文章:

Qt 布局(QSplitter 类QDockWidget 类) 总结

一、QSplitter 类(窗口分割) QSplitter类是一个Qt框架提供的基础窗口控件类&#xff0c;用于分割窗口&#xff0c;使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见&#xff0c;经常用于划分窗口区域&#xff0c;使得程序可以同时显示多个子…...

git-ssh-key协议同步文件

生成秘钥 ssh-keygen -t rsa ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Beza/.ssh/id_rsa): /c/Users/Beza/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): …...

2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G. Pyramid(组合数学 计数)

题目 t(t<1e6)组样例&#xff0c;每次给定一个n(n<1e9)&#xff0c;统计边长为n的上述三角形的等边三角形个数 其中等边三角形的三个顶点&#xff0c;可以在所有黑色三角形&白色三角形的顶点中任取&#xff0c; 答案对1e97取模 思路来源 申老师 & oeis A0003…...

C++学习——string 详解(即C++字符串详解)

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 一、定义string变量的方法 C增强了对字符串的支持&#xff0c;除了可以使用C风格的字符串&#xff0c;还可以使用内置的 string 类。 string是类&#xff0c;而不是基本数据类型。虽…...

LeetCode 1 两数之和

题目描述 链接&#xff1a;https://leetcode.cn/problems/two-sum/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度&#xff1a;简单 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 targ…...

【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程

【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程前言准备工具anaconda/cuda/cudnnanaconda创建环境(选做)安装原…...

【1day】用友U8Cloud未授权访问漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

基于单片机智能汽车仪表设计系统

基于单片机的汽车智能仪表的设计 摘要&#xff1a;汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象&#xff0c;本次设计的基础核心的模块就是单片机&#xff0c;其应用的核心的控制单元就是stc89c52单片机&#xff0c;用到的测速模块是霍尔传感器&#xff0c…...

java double 保留两位小数

在Java中&#xff0c;你可以使用 DecimalFormat 或 String.format 来保留 double 类型的数字两位小数。以下是两个例子&#xff1a; 使用 DecimalFormat import java.text.DecimalFormat;public class Main {public static void main(String[] args) {double number 123.456…...

计网第六章(应用层)(三)(文件传输协议FTP)

一、基本概念 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中即文件传送。 FTP就是因特网上使用得最广泛的文件传送协议。采用客户/服务器方式。 FTP提供交互式的访问&#xff0c;允许客户指明文件的类型和格式&#xff08;如指明是否使用ASCII码&#xf…...

微信小程序canvas画布绘制base64图片并保存图片到相册中

WXML部分&#xff1a; <view class"img_" style"width: 100%;"><canvas type"2d" id"canvasId" style"width: 100%;height: 100%" ></canvas> <button style"margin: auto;width: 70%;marg…...

Hadoop3教程(八):MapReduce中的序列化概述

文章目录 &#xff08;79&#xff09;MR序列化概述&#xff08;80&#xff09;自定义序列化步骤&#xff08;81&#xff09;序列化案例需求分析&#xff08;82&#xff09;序列化案例代码参考文献 &#xff08;79&#xff09;MR序列化概述 什么是序列化&#xff0c;什么是反序…...

Flash-Attention

这是一篇硬核的优化Transformer的工作。众所周知&#xff0c;Transformer模型的计算量和储存复杂度是 O ( N 2 ) O(N^2) O(N2) 。尽管先前有了大量的优化工作&#xff0c;比如LongFormer、Sparse Transformer、Reformer等等&#xff0c;一定程度上减轻了Transformer的资源消耗…...

发布npm包质量分测试

查询质量分接口 https://registry.npmjs.org/-/v1/search?textcanvas-plus v0.0.1 quality 0.2987 新建文件夹 canvas-plus 执行命令 npm init 生成package.json {"name": "3r/canvas-plus","version": "0.0.1","descript…...

基于适应度相关优化的BP神经网络(分类应用) - 附代码

基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.适应度相关优化BP神经网络3.1 BP神经网络参数设置3.2 适应度相关算法应用 4…...

复杂网络 | 利用复杂网络预测城市空间流量

文章目录 效果一览文章概述导入必要的包读取时间序列数据,并使用日期做索引将时间序列进行可视化展示取一年的数据进行分析将数据分布进行可视化展示画移动平均图n 代表滑动窗口的大小向前差分法去趋势化线性回归方法去趋势化拟合模型的线性趋势将拟合得到趋势进行可视化detren…...

【1】c++11新特性(稳定性和兼容性)—>原始字面量

在C11中添加了定义原始字符串的字面量&#xff0c;定义方式为&#xff1a;R “xxx(原始字符串)xxx”其中&#xff08;&#xff09;两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义&#xff0c;而不需要额外对字符串做转义或连接等操作。 编程过程中&#xff0c…...

学习pytorch13 神经网络-搭建小实战Sequential的使用

神经网络-搭建小实战&Sequential的使用 官网模型结构根据模型结构和数据的输入shape&#xff0c;计算用在模型中的超参数coderunning log网络结构可视化 B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html#torch.nn.Se…...

TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系

1. TCP发送接口&#xff1a;send() TCP发送数据的接口有send&#xff0c;write&#xff0c;sendmsg。在系统内核中这些函数有一个统一的入口&#xff0c;即sock_sendmsg()。由于TCP是可靠传输&#xff0c;所以对TCP的发送接口很容易产生误解&#xff0c;比如sn send(...); 错误…...

【Python、Qt】使用QItemDelegate实现单元格的富文本显示+复选框功能

主打一个 折磨 坑多 陪伴。代码为Python&#xff0c;C的就自己逐条语句慢慢改吧。 Python代码&#xff1a; import sys from types import MethodType from PyQt5.QtCore import Qt,QPoint,QSize,QRect,QEvent from PyQt5.QtGui import QStandardItemModel, QStandardItem,QTe…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...