现在在设计一个界面,其中一个功能是 按下 “启动”按钮后,spinBox的值(初始值为0)按定时器每100ms 加1,加到99后,设置标识符 flag=false,然后手动改变spinBox的值为0,再按下“启动”按钮后,发现程序虽能运行,但定时器的信号发射间隔却变短了,“启动”越多次,定时器跑得越快,这是为什么呢??是因为定时器没有停止,两个叠加起来了???请大家指点指点。谢谢~
附部分程序代码如下:
void Dialog::on_start_clicked() //启动按钮
{ flag=true; // flag为全局变量
QTimer *x = new QTimer(this);
//新建定时器
if(x->isActive())
{x->stop();}
connect(x,SIGNAL(timeout()),this,SLOT(valueChange()));
//关联定时器计满信号和相应的槽函数
x->start(100);
//定时器开始计时,其中100表示100ms即0.1秒
}
void Dialog::valueChange()
{
lo_1=ui->spinBox->value();
//lo_1为全局变量,用来获取spinBox的值
int o=lo_1;
if(o<99&&flag==true){
o++;
ui->spinBox->setValue(o);
}
else{flag=false;}
}