qt自定义控件的封装

刚学了一个很有意思的东西,前面学了list,Tree,Table三大控件和一部分常用基础控件,但感觉没啥意思,就是用别人的直接用,刚学了一个自定义控件的封装,流程如下:
 

想把两个不相关的组件封装在一块,直接用ui不行,所以先新添加了qt设计师页面,新添加了一个SmallWidget *ui

在smallwidget.ui中添加了一个,缩放至正常大小

在主页面widget.ui中提升smallwidget.ui

取两个空白的widget,提升                      效果如下

接下来在smallwidget.cpp中进行代码实现        刚听了一句话很有道理,逻辑业务的内容要用代码的实现   

信号和槽进行链接  connect     

//spinBox数字改变   slider跟着滑动void(QSpinBox:: * signal)(int)=&QSpinBox::valueChanged;//这里有两个同名函数(重载),所以需要函数指针指向int那个connect(ui->spinBox,signal,ui->horizontalSlider,&QSlider::setValue);//slider滑动  spinBox数字跟着改变connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

重点:

存在两个同名函数(重载),所以需要函数指针指向t那个

void(QSpinBox:: * signal)(int)=&QSpinBox::valueChanged ;

这样就实现了spinBox和horizontalSlider的双向控制      效果如下

增进一点  那么添加两个按钮 一个控制一半 ,一个控制qDebug输出获取结果怎么实现呢?

这很巧妙

 

 因为这是两个新实现,所以要新创建两个功能

先在smallwidget.h中声明自己提供两个功能

public:explicit SmallWidget(QWidget *parent = nullptr);~SmallWidget();//设置数据void setData(int val);//获取数据int getData();

再去smallwidget.cpp封装接口           这里主要是实现一个setValue一动,horizontalSlider跟着变,然后QSpinBox跟着变          get同理

//设置数据
void SmallWidget::setData(int val)//写成员函数加上了父类作用域
{ui->horizontalSlider->setValue(val);//setValue一动,horizontalSlider跟着变,然后QSpinBox跟着变
}//获取数据
int SmallWidget::getData()
{return ui->horizontalSlider->value();
}

再到最妙的地方

pushButton一按就可以调用smallwidget               不要忘记我们之前再widget做了提升,所以它就可以用smallwight函数,所以点设置获取就可以连接上     这里太牛了  理解之后豁然开朗

    //点击设置到一半按钮connect(ui->pushButton,&QPushButton::clicked,[=](){ui->widget->setData(50);});//此时能连上smallwidget原因是前面提升过了,所以它就可以用smallwight函数,所以点设置获取就可以连接上//点击获取当前值按钮connect(ui->pushButton_2,&QPushButton::clicked,[=](){qDebug()<<ui->widget->getData();//页面输出});

补充:两个按钮只能在这里设置,不能去smallwidget中设置,因为这个在uiwidget没有提升

豁然开朗

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

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

相关文章

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(十)——Cibersort——完结

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

Mybatis-Plus的条件构造器QueryWrapper UpdateWrapper详解

文章目录 1. 引言2. Mybatis-Plus简介3. QueryWrapper3.1 基本用法3.2 动态条件拼接3.3 Lambda表达式的高级用法 4. UpdateWrapper4.1 基本用法4.2 动态条件拼接4.3 Lambda表达式的高级用法 5. 拓展功能与未来展望5.1 动态SQL的使用5.2 自定义条件构造器 6. 总结 &#x1f389;…

DQL命令查询数据(三)

本课目标 掌握MySQL的多表查询 SQL语句的综合应用 多表连接查询 通过各个表之间共同列的关联性&#xff08;例如&#xff1a;外键&#xff09;来查询的 分类&#xff1a; 内连接(INNER JOIN) &#xff0c;可简写为 JOIN&#xff1b;左外连接(LEFT OUTER JOIN)&#xff0c;…

VScode 画图插件

开源免费的插件 随着http://draw.io开源vs code插件之后&#xff0c;它一跃成为最强大的流程图工具。 目前http://draw.io支持3种文件后缀&#xff0c;你只需要新建3种后缀之一的文件就可以在vs code中画流程图&#xff0c;它们分别是&#xff1a; *.drawio*.dio*.drawio.sv…

docker部署simpleDocker

1&#xff0c;安装docker&#xff0c;请参考 linux安装docker 2&#xff0c;安装docker-compose&#xff0c;请参考 Docker-Compose 3&#xff0c;安装simpleDocker 准备docker-compose.yml文件 version: 3 services:redis:container_name: redisimage: redis:latestweb:conta…

7+非肿瘤+WGCNA+机器学习+诊断模型,构思巧妙且操作简单

今天给同学们分享一篇生信文章“Platelets-related signature based diagnostic model in rheumatoid arthritis using WGCNA and machine learning”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a; DEGs和血小板相关基因的…

Python笔记02-基础概念、数据类型及字符串格式化

文章目录 字面量注释变量数据类型标识符运算符字符串数据输入 字面量 在代码中&#xff0c;被写下来的固定的值&#xff0c;称之为字面量 Python中常用的有6种值&#xff08;数据&#xff09;的类型 如下变量被直接写在程序中&#xff0c;称之为字面量包括 数字和字符串类型 …

STL标准库与泛型编程(侯捷)笔记3

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

uniapp:签字版、绘画板 插件l-signature

官方网站&#xff1a;LimeUi - 多端uniapp组件库 使用步骤&#xff1a; 1、首先从插件市场将代码下载到项目 海报画板 - DCloud 插件市场 2、下载后&#xff0c;在项目中的uni_modules目录&#xff08;uni_modules优点&#xff1a;不需要import引入&#xff0c;还可以快捷更新…

2023全球软件研发技术大会(SDCon2023)-核心PPT资料下载

一、峰会简介 本次峰会包含12大会议主题&#xff1a;云原生设施与平台、微服务架构实践、软件质量与效能、大数据实践与前沿、架构设计与演进、高可用与高性能架构、Web与大前端开发、编程语言与平台、AIGC与大模型、推荐系统实践、AI智能应用与研究、机器学习架构实践。 软件…

二维和三维联合进行圆孔空间定位

0.任务描述 对空间圆孔进行三维空间的定位&#xff0c;方便后续的抓取或装配流程&#xff1a;使用二维图与opencv霍夫圆检测进行二维上的定位&#xff0c;再从深度图上查询深度信息&#xff0c;结合相机内参计算出相机坐标系下圆孔的三维坐标信息&#xff0c;并在点云上进行标…

leetcode算法题之floodfill算法---深搜(dfs)

本章目录 1.图像渲染2.岛屿数量3.岛屿的最大面积4.被围绕的区域5.太平洋大西洋水流问题6.扫雷游戏7.机器人的运动范围 1.图像渲染 图像渲染 class Solution {int dx[4] {0,0,1,-1};int dy[4] {1,-1,0,0};int newColor,prev;int m,n; public:vector<vector<int>&g…