Qt槽与信号

一、前言

信号与槽是Qt编程的基础,也是Qt的一大创新。因为有了信号与槽的编程连接机制,在Qt中处理界面各个组件的交互操作时变得更加直观和简单。

信号(SIGNAL)是在特定情况下被发送的时间,槽(SLOT)则是对信号进行响应的函数。

熟练掌握槽与信号可以比较容易的将信号与响应代码关联起来。

本文制作一个充电演示动画来进行槽与信号的理解。

二、具体实现

1.设计ui界面

双击.ui文件,拖动两个pushbutton以及一个progress bar进行ui布局,设置两个按键的objectname分别为btn_start和btn_end。

2.设计槽函数

根据功能分析,槽函数一共有三个,start,end以及时间控制

代码如下:

private slots:
    void doProcessStart(bool);
    void doProcessEnd(bool);
    void doProcessTimeout();

3.初始化,连接信号与槽

设计init函数用来进行信号与槽的连接以及部分变量的初始化

void Widget::Init()
{
    num = 0;
    connect(ui->btn_start,SIGNAL(clicked(bool)),this,SLOT(doProcessStart(bool)));
    connect(ui->btn_end,SIGNAL(clicked(bool)),this,SLOT(doProcessEnd(bool)));
    myTimer  =new QTimer(this);
    connect(myTimer,SIGNAL(timeout()),this,SLOT(doProcessTimeout()));
}

connent()用于连接槽与信号

4.编写函数功能

启动函数需要控制动画的开始,使用start()函数进行计时器的运行,设置参数,start()将在参数间隔内重复启动计时器,暂停函数使用stop()进行控制。

计时器则使用myTimer变量进行控制,同时连接槽函数进行显示,每当调用槽函数时,设置num记录并显示数字。

void Widget::doProcessStart(bool)
{
    //启动
    myTimer->start(100);
}
void Widget::doProcessEnd(bool)
{
    //暂停
    myTimer->stop();
}
void Widget::doProcessTimeout()
{
    num++;
    if(num == 101)
    {
        num=0;
    }
    ui->progressBar->setValue(num);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值