构造函数{
timer = new QTimer;
this->connect(this,SIGNAL(time_out()),this,SLOT(timer_out_slot())); //定时器关联
}
void MainWindow::timer_out_slot(){
// timer = new QTimer;
timer->setSingleShot(true); //一次定时
connect(this,SIGNAL(timer_stop()),this,SLOT(timer_stop_slot())); //停止定时器
qDebug() << "定时器";
connect(timer,SIGNAL(timeout()),this,SLOT(update_slot())); //超时
timer->start(5000); //定时5000ms
}
//超时处理
void MainWindow::update_slot()
{
qDebug() << "超时处理";
QMessageBox::warning(this,tr("警告"),tr("发送超时"));
return;
}
//定时器停止处理
void MainWindow::timer_stop_slot()
{
if(timer->isActive())
timer->stop();
qDebug() << "定时器停止 stop timer";
return;
}
成员函数{
emit time_out();
}
输出结果:点击一下,发送数据,出现一个“定时器停止 stop timer”,在点击一次,出现二次“定时器停止 stop timer”,在点一次,出现3个,这是为什么。。。
发送数据 "2014.10.18 11:30:45:807
定时器
定时器停止 stop timer
发送数据 "2014.10.18 11:30:47:535
定时器
定时器停止 stop timer
定时器停止 stop timer
发送数据 "2014.10.18 11:30:49:320
定时器
定时器停止 stop timer
定时器停止 stop timer
定时器停止 stop timer
------解决思路----------------------
构造函数内的是对的,错在他在槽函数内还一次次地去connect。但是,它的点第3次时, 出现3个“stop timer”,应该有问题,按他的代码,怎么也应该是4次