[提问]qtimer使用stop函数不能终止qtimer调用的槽函数
这是Qtimer start和stop所在的地方,还有一个void timerrenDone()函数,按下走动的人开始按钮,timeren函数执行,然后按下走动的人结束按钮,timerren函数仍然在执行,是我的timer函数用错了,还是timerrenDone()的问题
void Widget::on_pushButton_clicked()//走动的人开始按钮
{
ui->label->show();
ui->label_2->show();
ui->label_3->show();
ui->label_4->show();
ui->label_5->show();
ui->label_6->show();
ui->pushButton->hide();
ui->pushButton_3->show();
QTimer *timerren=new QTimer;
timerren->start(100);
connect(timerren,SIGNAL(timeout()),this,SLOT(timerrenDone()));
ui->pushButton->hide();
}
void Widget::on_pushButton_3_clicked()//走动的人结束按钮
{
timerren->stop();
ui->label->hide();
ui->label_2->hide();
ui->label_3->hide();
ui->label_4->hide();
ui->label_5->hide();
ui->label_6->hide();
ui->pushButton_3->hide();
ui->pushButton->show();
}
[解决办法]
LZ的变量“timerren”要设置成类成员变量的吧,要不然“void Widget::on_pushButton_3_clicked()//走动的人结束按钮”怎么调用?
[解决办法]
QTimer *timerren=new QTimer;
这个是临时变量?
[解决办法]
还没结贴
[解决办法]
lz的代码如果能编译通过的话,那么在on_pushButton_clicked中的timerren是一个局部变量,而在on_pushButton_3_clicked中的timerren是一个全局变量,这两个变量代表两个不同的定时器,你用第二个定时器来stop第一个定时器,那当然是失败的。
[解决办法]
你的timerren是局部变量,只能在本函数中使用,不能在另外的函数中使用。。。
在函数外声明一个QTimer *timerrren;
然后再你的on_pushButton_clicked()中timerren = new QTimer;即可