动手实现自定义控件:

1、首先在ui界面中添加一个(Widget)容器类。如图中的1所示

2、在项目中添加一个SmallWidget类,如下:

        

3、接着在程序编辑界面进行程序编辑如下:

#include "smallwidget.h"

   /*自定义控件*/

#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout> SmallWidget::SmallWidget(QWidget *parent) : QWidget(parent)
{
QSpinBox *spin = new QSpinBox(this); QSlider *slider = new QSlider(Qt::Horizontal,this); /*将文件添加到布局中*/
QHBoxLayout *layOut = new QHBoxLayout(this);
layOut->addWidget(spin);
layOut->addWidget(slider); /*
* 实现两个控件相互关联
* 首先确定信号的发送者与接受者。
* 查看信号所在的类QSpinBox的帮助文档,查看Signals,
* 不难看出valueChanged为重载函数,
* 即:经过查询&QSpinBox::valueChanged中的valueChanged为
* 重载函数,为了不产生二义性,并进行类型转换,这里使用如下前缀代码:
* static_cast< void (QSpinBox::*) ( int )>
* 关键字 返回值类型 作用域指针类型 参数
* 查看slider的槽函数,其不是重载函数,很容易将其写出&QSlider::setValue
*/ connect(spin,static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),slider,&QSlider::setValue); //同理可以将 slider 关联到 spin
connect(slider,&QSlider::valueChanged,spin,&QSpinBox::setValue); }

4、将代码完成以后,就可以将ui界面中的控件进行提升,右键单击Widget容器类。选择提升为,即可出现类似如下的界面(这个界面是我对其他控件进行提升的界面):

  第一步:在图中1处添加类名,这里为了防止错误,做好从程序编辑界面处复制过来,复制的内容就是之前添加的类的名字

  第二步:在图中2处勾选,勾选的目的意义是当对控件进行提升时,右键单击控件会有两个提升为,其中一个提升为能够快速的进行提升,而不需要再填写这些内容,

  第三步:如图中3处点击添加。

  第四步:如图中4处点击提升。

  第五步:观察现象,   widget_5  的基类从   QWidget    变成了   SmallWidget

到此,就完成了自定义控件的制作过程,可以点击运行,看看结果了。如下图:

当改变spin里面的值时,slider的滑动块就会滑至对应的位置。

当将slider的滑块滑至莫处时,spin里面就会相对应的显示对应的数字。

      大功告成!!!!!!

QT +自定义控件-spin+slider的更多相关文章

  1. Qt自定义控件之仪表盘2--QPaint绘制仪表盘

    0.前言 前面一篇文章写道了仪表盘的特点,实现了一个贴图的仪表盘,属于低配版本的仪表盘.    主要是有任何改动时候就需要重新设计图片,不能适配不同控件大小,即使让它自由拉伸,但仪表盘放大缩小时候显示 ...

  2. Qt自定义控件之仪表盘3--雷达扫描图

    1.设计思想 雷达扫描图,在影视作品中见到较多,比如飞机雷达.舰艇雷达,有一个扫描线转圈代表雷达一周旋转或一个批次的收发,发现目标就在表盘上标记位置.和汽车仪表盘类似,汽车仪表盘有底盘背景图.同圆.刻 ...

  3. Qt自定义控件之仪表盘1--简单的贴图仪表盘

    0.前言 学程序首先要输出hell world,学电子要先来个流水灯.学Qt,那就必须先来个自定义控件,若有人问我从哪个下手,我推荐仪表盘,可简可繁,从低配到高配齐全,可入门也可进阶. 1.仪表盘解析 ...

  4. 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件

    在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...

  5. Qt自定义控件(插件)并添加到QtDesigher

    之前使用Qt的时候都是手写代码的(因为批量按钮可以使用数组实现),但当界面越来越复杂时,这种开发效率就太低了; 后来就开始使用QtDesigner,但要使QtDesigner支持我自己写的控件,需要提 ...

  6. QT自定义控件插件化简要概述

    1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要 ...

  7. Qt自定义控件

    Qt创建自定义控件教程 一.新建Qt设计师控件 二.设置项目名称 三.选择kits 这里取消Debug选项,不需要这个选项都是编译为dll文件直接调用. 删除掉MyControl原有的.h和cpp文件 ...

  8. QT自定义控件系列(二) --- Loading加载动画控件

    本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于 ...

  9. Qt自定义控件系列(一) --- 圆形进度条

    本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于 ...

随机推荐

  1. 怎样让自定义Cell的图片和文本自适应高度

    Let's do it! 首先创建一个Model类 包括一个图片名称属性 还有文字内容属性 #import <Foundation/Foundation.h> @interface Mod ...

  2. PhpStorm之操作数据库

    对数据库进行基本的操作 还不清楚如何使用PhpStorm连接本地数据库的朋友看一下我的上一篇博客配置数据库连接 点击已经连接好的数据库,找到下图中的 Consoles,然后点击 console(def ...

  3. lightoj 1074【spfa判负环】

    题意: 给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出& ...

  4. Codeforces Round #375 (Div. 2)【A,B【模拟】,D【DFS】】

    PS_B:阿洗吧!B题卧槽数组开了250... PS_D:D题主要挂在了50*50口算得了250,数组开小,然后一开始还错了.= =哎,以后对于数据范围还是注意一点: 卧槽,这场可真二百五了... A ...

  5. angularJs自定义指令(directive)实现滑块滑动

    最近老大让我一个效果实现在页面某一部分内滑块随着滚动条上下滑动,说明一下我们项目使用技术angularJs.大家都知道,使用jquery很好实现. 那么angular如何实现呢,我用的是自定义指令(d ...

  6. 002-tomcat安装与配置

    1.创建目录 [root@bogon tomcat]#mkdir /usr/local/java/tomcat 2.上传压缩包并解压 [root@bogon tomcat]# tar xvf apac ...

  7. Cannot convert value '0000-00-00 00:00:00' TIMESTAMP

    MySql Timestamp 类型的字段 '0000-00-00 00:00:00'  转换成Java Timestamp 时会抛出 Cannot convert value '0000-00-00 ...

  8. rn-splash-screen 启动页 ios

    1.删除iOS工程文件夹下的 LaunchScreen.xib 文件 2. 3.  如果第4步不一样的样式,可以重新走这个图片的步骤就行 4.进入iOS工程的AppDelegate.m中做如下修改: ...

  9. text() html() empty()

    text()             获取中间的文本  不包括标签 html()            获取标签中间的东西 包括标签 与text()是有区别的 empty()         清空标签 ...

  10. 087 Scramble String 扰乱字符串

    给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树.下图是字符串s1 = "great"的一种可能的表示形式.    great   /    \ ...