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

23 自定义控件

案例:组合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.lryc.cn/news/97564.html

相关文章:

  • 从原理到实践,分析 Redisson 分布式锁的实现方案(二)
  • QT【day3】
  • 模版模式和策略模式的区别
  • Github搭建个人博客全攻略
  • gensim conherence model C_V 值与其他指标负相关BUG
  • QT DAY3
  • TortoiseGit(小乌龟)使用问题总结
  • 106、Redis和Mysql如何保证数据一致
  • SpringBoot+jasypt-spring-boot-starter实现配置文件明文加密
  • k8s核心概念
  • opencv 处理的视频 保存为新视频 ,新视频 无法读取
  • 《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)
  • SpringCloudAlibaba微服务实战系列(一)Nacos服务注册发现
  • 23.7.27 牛客暑期多校4部分题解
  • Ubuntu 20.04 安装教程
  • 如何评判算法好坏?复杂度深度解析
  • 【HashMap】2352. 相等行列对
  • 如何声明静态方法 和 实现?
  • 哈工大计算机网络课程局域网详解之:无线局域网
  • 系统集成|第六章(笔记)
  • MySQL主从复制环境部署
  • day42-servlet下拉查询/单例模式
  • docker中设置容器健康检查
  • azure-cognitiveservices-speech api error while using with AWS Lambda
  • 系统集成项目管理工程师挣值分析笔记大全
  • TCP 协议【传输层协议】
  • Golang 中的 time 包详解(二):time.Duration
  • Linux 学习记录58(ARM篇)
  • 【一文搞懂】—带霍尔编码器的直流有刷减速电机
  • 滴水逆向三期笔记与作业——02C语言——05 正向基础/05 循环语句