QT +自定义控件-spin+slider

动手实现自定义控件:

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

 

      大功告成!!!!!!

 

转载于:https://www.cnblogs.com/doker/p/11041928.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值