当前位置: 代码迷 >> QT开发 >> Qtimer 有关问题,设置单次定时,但是slot槽程序被执行两遍
  详细解决方案

Qtimer 有关问题,设置单次定时,但是slot槽程序被执行两遍

热度:233   发布时间:2016-04-25 03:42:20.0
Qtimer 问题,设置单次定时,但是slot槽程序被执行两遍?
void MainWindow::on_newPushButton_clicked()
{
    if(ui->checkBox->isChecked())
    {
        this->hide();
        this->timer=new QTimer;
        QObject::connect(this->timer,SIGNAL(timeout()),this,SLOT(shotScreenSlot()));
        this->timer->start(ui->delaySpinBox->value()*1000);//设置延时时间
        this->timer->setSingleShot(true);
    }else
    {
        qApp->beep();
    }
}
void MainWindow::shotScreenSlot()
{
    this->timer->stop();//测试了这个几乎不起作用,如果在上面不设置单次触发,那么会周期触发的
    this->pixmap=QPixmap::grabWindow(QApplication::desktop()->winId());
    ui->screenLabel->setPixmap(this->pixmap.scaled(ui->screenLabel->size()));
    qDebug()<<"****";//测试slot函数进入几次
    this->show();   
}


以上就是程序最关键部分   timer设置成单次触发了,但是slot会执行两遍,不知道为什么?哪位大神遇到这种问题,求教。。。

------解决方案--------------------
这个问题其实挺简单,按钮系统有个缺省的slot 函数,命名规则刚好和你的一样了。哦!你找到答案了!。
  相关解决方案