23 自定义控件

news/2024/11/29 3:57:55/

案例:组合Spin Box和Horizontal Slider实现联动

 新建Qt设计师界面:

 选择Widget:

 

 选择类名(生成.h、.cpp、.ui文件)

 在smallWidget.ui中使用Spin Box和Horizontal Slider控件

 可以自定义数字区间:

 

在主窗口widget.ui中使用widget并将其提升为smallWidget,使Spin Box和Horizontal Slider封装到一起

提升成功后,widget的类为smallWidget

代码:

联动

//smallwidget
//spinBox数字改变,Slider随着改变
void(QSpinBox:: *singal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,singal,ui->horizontalSlider,&QSlider::setValue);//slider移动,spinBox数字改变
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

增加两个按钮:点击设置到一半、点击获取当前值

//smallWidget.h
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H
#include <QWidget>namespace Ui {
class smallWidget;
}class smallWidget : public QWidget
{Q_OBJECTpublic:explicit smallWidget(QWidget *parent = 0);~smallWidget();//设置数据void setData(int val);//获取数据int getData();private:Ui::smallWidget *ui;
};#endif // SMALLWIDGET_H
//smallWidget.cpp
#include "smallwidget.h"
#include "ui_smallwidget.h"smallWidget::smallWidget(QWidget *parent) :QWidget(parent),ui(new Ui::smallWidget)
{ui->setupUi(this);//spinBox数字改变,Slider随着改变void(QSpinBox:: *singal)(int) = &QSpinBox::valueChanged;connect(ui->spinBox,singal,ui->horizontalSlider,&QSlider::setValue);//slider移动,spinBox数字改变connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}//设置数据
void smallWidget::setData(int val){ui->horizontalSlider->setValue(val);
}//获取数据
int smallWidget::getData(){return ui->horizontalSlider->value();
}smallWidget::~smallWidget()
{delete ui;
}
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "QDebug"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//点击设置到一半按钮connect(ui->btn_set,&QPushButton::clicked,[=](){ui->widget->setData(50);});//点击获取当前值按钮connect(ui->btn_get,&QPushButton::clicked,[=](){qDebug()<<ui->widget->getData();});
}Widget::~Widget()
{delete ui;
}


http://www.ppmy.cn/news/977998.html

相关文章

华为认证HCIA-HCIP-HCIEdatacom题库解析+机构视频+实验

题库包含有2023年最新HCIA-datacom题库、HCIP-datacom题库&#xff0c;HCIE-datacom题库&#xff0c; 云计算HCIA&#xff0c;HCIP题库&#xff0c;云服务HCIA&#xff0c;HCIP题库&#xff0c;华为存储HCIP题库&#xff0c;华为安全HCIP题库 &#xff0c;学习笔记&#xff0c;…

面积阵列封装技术-BGA CSP/Flip Chip

面积阵列封装有不同的类型&#xff0c;因此也就有着不 同的结构特点和组装方式。面积阵列封装以其结构 形 式 可 分 为 两 大 类 :BGA/CSP 和 倒 装 芯 片&#xff08;Flip Chip&#xff09;。 1 BGA技术 BGA 形式封装是 1980 年由富士通公司提出&#xff0c; 在日本 IBM 公司…

app专项性能测试测试指标和测试方法

工作中没有做过app这块的性能测试&#xff0c;但是你有面试问到过&#xff0c;现在做个总结如下 1、首次加载&#xff08;冷启动&#xff09; A.使用logcat监控activitymanager B.adb shell am start -w C.人工秒表计数 2、非第一启动&#xff08;热启动&#xff09; 应…

Spring Cloud【SkyWalking服务环境搭建、微服务接入SkyWalking探针、Docker搭建Elasticsearch环境 】(十四)

目录 分布式请求链路追踪_SkyWalking服务环境搭建 分布式请求链路追踪_微服务接入SkyWalking探针 分布式请求链路追踪_Docker搭建Elasticsearch环境 分布式请求链路追踪_SkyWalking使用Elasticsearch持久化 分布式请求链路追踪_SkyWalking自定义链路追踪 分布式请求链路…

Fastify系列-从0到1超详细手把手教你使用Fastify构建快速的API

什么是Fastify&#xff1f; Fastify是一个web框架&#xff0c;高度专注于以最少的开销和强大的插件架构提供最佳的开发体验。它的灵感来自于Hapi和Express&#xff0c;据我们所知&#xff0c;它是运行在Node.js上的最快的Web框架之一。 为什么使用Fastify&#xff1f; 这些是…

网络安全必备的10款工具(附安装包)

“磨刀不误砍柴工”。 优秀的工具有助于提高工作效率&#xff0c;安全工程师也需要优秀的安全软件来提高工作效率。 在具体的工作场景中&#xff0c;有很多种选择&#xff0c;这里有10种开源的免费安全工具&#xff0c;不仅可以提高工作效率&#xff0c;还可以降低企业成本。 …

【LeetCode热题100】打卡第43天:会议室II完全平方数

文章目录 【LeetCode热题100】打卡第43天&#xff1a;会议室II&完全平方数⛅前言 会议室II&#x1f512;题目&#x1f511;题解 完全平方数&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第43天&#xff1a;会议室II&完全平方数 ⛅前言 大家好&#xff…

【Datawhale夏令营】任务一学习笔记

目录 一&#xff1a;anaconda的环境配置 二&#xff1a;赛题任务解读 2.1 任务要求 2.2 数据集介绍 2.3 评估指标 三&#xff1a;机器学习之 LightGBM 一&#xff1a;anaconda的环境配置 下载Anaconda&#xff1a;访问Anaconda官方网站&#xff08;https://www.anaconda.…