当前位置: 代码迷 >> QT开发 >> qt Timer为什么会屡次出现
  详细解决方案

qt Timer为什么会屡次出现

热度:168   发布时间:2016-04-25 03:09:01.0
qt Timer为什么会多次出现
构造函数{
    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去掉它……要仔细查自己的代码。

构造函数内的是对的,错在他在槽函数内还一次次地去connect。但是,它的点第3次时, 出现3个“stop timer”,应该有问题,按他的代码,怎么也应该是4次
  相关解决方案