QT学习之自定义控件
一 、自定义控件封装
1、 添加新文件 - Qt – 设计师界面类 (smallwidget.h smallwidget.cpp smallwidget.ui)
2、在添加的新 smallwidget.ui中 设计 QSpinBox和QSlider 两个控件,组合在一起
3、 主UI界面中使用自定义控件,拖拽一个Widget,点击提升为刚在添加的新控件类的名字smallwidget,点击添加,点击提升,显示为如下效果(已经添加了两个按钮用来调用setnum 和 getnum 新接口)
4、 实现功能,改变数字,滑动条跟着移动 ,信号槽监听。
在添加的新控件类的smallwidget.cpp文件中的构造函数中添加代码
#include "smallwidget.h"
#include "ui_smallwidget.h"smallwidget::smallwidget(QWidget *parent) :QWidget(parent),ui(new Ui::smallwidget)
{ui->setupUi(this);void(QSpinBox:: *spsignal)(int) = &QSpinBox::valueChanged;//槽函数有重载版本,需要用函数指针,信号函数和槽函数的参数要一一对应connect(ui->spinBox, spsignal, ui->horizontalSlider, &QSlider::setValue);connect(ui->horizontalSlider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);}
5、 在新控件类中提供 getNum 和 setNum对外接口,
在smallwidget.h中添加
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H#include <QWidget>namespace Ui {
class smallwidget;
}class smallwidget : public QWidget
{Q_OBJECTpublic:explicit smallwidget(QWidget *parent = nullptr);~smallwidget();//添加///void setNum(int val);int getNum();///private:Ui::smallwidget *ui;
};#endif // SMALLWIDGET_H
在smallwidget.cpp中添加
void smallwidget::setNum(int val)
{ui->spinBox->valueChanged(val);}int smallwidget::getNum()
{return ui->spinBox->value();
}
6、 测试接口
在 主.cpp中添加代码,调用接口
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->btn1, &QPushButton::clicked, [=](){ui->widget->setNum(50);//设置为进度条的一半});connect(ui->btn2, &QPushButton::clicked, [=](){qDebug()<< ui->widget->getNum();//获取当前的值});}MainWindow::~MainWindow()
{delete ui;
}
7、效果
QT学习之自定义控件相关推荐
- Qt学习之Qt基础入门(下)
1. 前言 前两篇博客简单的阐述了一下Qt的入门用法,这篇博客继续跟着视频学习. Qt入门系列: Qt学习之C++基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) ...
- 继承QWidget使用QPainter自定义二维图形控件【Qt学习】
继承QWidget使用QPainter自定义二维图形控件[Qt学习] 通过阅读该文章,将了解本文所说的二维图形控件的基本概念.为何要自定义二维图形控件.如何自定义二维图形控件. 该文章将首先进行一些书 ...
- 【QT学习笔记】基于QT的天气预报
[QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...
- Qt学习笔记,Qt国际化
Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\ ...
- Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...
- 转载: Qt 学习之路 2归档
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/
- 对QT学习之路12-14的源代码补充与修正
QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...
- Qt学习笔记之MySQL数据库
一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- Qt学习笔记之数据库
一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...
- Qt学习笔记之文件处理
Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...
最新文章
- 软件开发人员能力模型
- Mysql按周,按月,按日,按小时分组统计数据
- Android模仿京东登录注册,Android:布局实例之模仿京东登录界面
- SylixOS异常管理
- python app开发模块_Python pytkapp包_程序模块 - PyPI - Python中文网
- 如何阻止机器人杀害人类?
- Ubuntu下多版本OpenCV共存和切换
- 代写python assignment经常用到的代码语法分享!
- 投稿期刊:机械人机交互图形图象交叉学科
- 收藏一个Excel甘特图模板
- 巧解快速排序时间复杂度
- C# NOPI读取Excel
- 应用内收费--商品列表--子龙山人
- MTK7621 uboot编译与烧写
- Online Judge系统(简称OJ)
- 人脸识别主要算法原理
- Python可视化:python画图字体设置
- 数字孪生城市的2个技术关键点 优锘ThingJS
- Day 15 正则表达式
- 【每日一题】打卡 12
热门文章
- “人人都是数据科学家从新开始用Python学习数据科学的完整教程P1
- layuimini tab切换刷新解决方案
- 编写一个应用程序,给出汉字“你”“我”“他”在Unicode表中的位置
- Python 高性能编程
- mysql成绩是什么数据类型_mysql数据类型
- linux实验考试题
- Android手机启动流程探究
- JDK1.6帮助文档中文版
- 第三方支付易宝支付的具体实现
- 10W+字C语言从入门到精通保姆级教程(2021版下)