动手实现自定义控件:

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里面就会相对应的显示对应的数字。

      大功告成!!!!!!

最新文章

  1. 【原创】Android selector选择器无效或无法正常显示的一点研究
  2. 经验分享:10个简单实用的 jQuery 代码片段
  3. NYOJ题目96 n-1位数
  4. linux 任务调度 系统任务调度
  5. 机器学习技法-AdaBoost元算法
  6. iOS学习之UITableView
  7. Ubuntu环境下手动配置ElasticSearch0.90.5
  8. [转] 属性选择器.mark
  9. Maximal Square 解答
  10. hibernate多对一的操作解析
  11. 两种mysql文件安装方式——win7 32位OS
  12. POJ2524:Ubiquitous Religions (并查集模板)
  13. java equals 和 == 的区别
  14. the first simple html page generated by div and table tags
  15. three.js引擎基础知识—摄像机、场景及渲染器
  16. 解决Windows10中Virtualbox安装虚拟机没有64位选项
  17. 分享:大型Web网站架构演变之9大阶段
  18. Spark源码剖析 - SparkContext的初始化(一)
  19. bootstrap table 前后端分页(超级简单)
  20. goland scope pattern 设置

热门文章

  1. C++函数调用过程深入分析
  2. bzoj 5120: [2017国家集训队测试]无限之环【最小费用最大流】
  3. hoj2798 Globulous Gumdrops
  4. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端
  5. linux命令行挂载NTFS文件系统的移动硬盘
  6. (十一)SpringBoot导出excel文件
  7. 面向对象-mixin设计模式的应用(多继承应用场景)
  8. DB2 函数
  9. oracle dual是个什么表
  10. G. Of Zorcs and Axes 二分 + 贪心 —— STL的用法