首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QTimer的疑点

2013-09-28 
QTimer的疑问Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){ui-setupUi(this)t

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()));

热点排行