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框架提供的基础窗口控件类,用于分割窗口,使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见,经常用于划分窗口区域,使得程序可以同时显示多个子…...
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)组样例,每次给定一个n(n<1e9),统计边长为n的上述三角形的等边三角形个数 其中等边三角形的三个顶点,可以在所有黑色三角形&白色三角形的顶点中任取, 答案对1e97取模 思路来源 申老师 & oeis A0003…...
C++学习——string 详解(即C++字符串详解)
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、定义string变量的方法 C增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。 string是类,而不是基本数据类型。虽…...
LeetCode 1 两数之和
题目描述 链接:https://leetcode.cn/problems/two-sum/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 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未授权访问漏洞学习
注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...
基于单片机智能汽车仪表设计系统
基于单片机的汽车智能仪表的设计 摘要:汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象,本次设计的基础核心的模块就是单片机,其应用的核心的控制单元就是stc89c52单片机,用到的测速模块是霍尔传感器,…...
java double 保留两位小数
在Java中,你可以使用 DecimalFormat 或 String.format 来保留 double 类型的数字两位小数。以下是两个例子: 使用 DecimalFormat import java.text.DecimalFormat;public class Main {public static void main(String[] args) {double number 123.456…...
计网第六章(应用层)(三)(文件传输协议FTP)
一、基本概念 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中即文件传送。 FTP就是因特网上使用得最广泛的文件传送协议。采用客户/服务器方式。 FTP提供交互式的访问,允许客户指明文件的类型和格式(如指明是否使用ASCII码…...
微信小程序canvas画布绘制base64图片并保存图片到相册中
WXML部分: <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中的序列化概述
文章目录 (79)MR序列化概述(80)自定义序列化步骤(81)序列化案例需求分析(82)序列化案例代码参考文献 (79)MR序列化概述 什么是序列化,什么是反序…...
Flash-Attention
这是一篇硬核的优化Transformer的工作。众所周知,Transformer模型的计算量和储存复杂度是 O ( N 2 ) O(N^2) O(N2) 。尽管先前有了大量的优化工作,比如LongFormer、Sparse Transformer、Reformer等等,一定程度上减轻了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神经网络(分类应用) - 附代码 文章目录 基于适应度相关优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.适应度相关优化BP神经网络3.1 BP神经网络参数设置3.2 适应度相关算法应用 4…...
复杂网络 | 利用复杂网络预测城市空间流量
文章目录 效果一览文章概述导入必要的包读取时间序列数据,并使用日期做索引将时间序列进行可视化展示取一年的数据进行分析将数据分布进行可视化展示画移动平均图n 代表滑动窗口的大小向前差分法去趋势化线性回归方法去趋势化拟合模型的线性趋势将拟合得到趋势进行可视化detren…...
【1】c++11新特性(稳定性和兼容性)—>原始字面量
在C11中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx”其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。 编程过程中,…...
学习pytorch13 神经网络-搭建小实战Sequential的使用
神经网络-搭建小实战&Sequential的使用 官网模型结构根据模型结构和数据的输入shape,计算用在模型中的超参数coderunning log网络结构可视化 B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html#torch.nn.Se…...
TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系
1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn send(...); 错误…...
【Python、Qt】使用QItemDelegate实现单元格的富文本显示+复选框功能
主打一个 折磨 坑多 陪伴。代码为Python,C的就自己逐条语句慢慢改吧。 Python代码: import sys from types import MethodType from PyQt5.QtCore import Qt,QPoint,QSize,QRect,QEvent from PyQt5.QtGui import QStandardItemModel, QStandardItem,QTe…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
