当前位置: 代码迷 >> QT开发 >> QTimer的疑点
  详细解决方案

QTimer的疑点

热度:19   发布时间:2016-04-25 03:39:14.0
QTimer的疑问
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    timer.setSingleShot(true);

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(openTimer()));
}

Dialog::~Dialog()
{
    delete ui;
}


void Dialog::openTimer()
{

    timer.setInterval(5*1000);
    timer.start();

    qDebug() << " now timer is start";
    connect(&timer,SIGNAL(timeout()),this,SLOT(handleProc()));
}


void Dialog::handleProc()
{
    qDebug() << "hello now is handleProc";
    timer.stop();
}

上面的程序为何触发openTimer时会执行两次handleProc。stop不是关闭了定时器了吗?

------解决方案--------------------
我觉得是
到了5秒时候
timeout()触发的比
handleProc()早。所以触发了两次。。
只想做一次为什么不用singleShot
------解决方案--------------------
如楼上说的,时间到了第二个5秒时,还没stop   timer。
想只触发一次可以用 QTimer::singleShot(5000, this, SLOT(handleProc()));