读书人

QTimer的疑点

发布时间: 2013-09-28 10:01:20 作者: rapoo

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

读书人网 >QT开发

热点推荐