专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

[提问]qtimer施用stop函数不能终止qtimer调用的槽函数

发布时间:2010-05-30 21:09:42 文章来源:www.iduyao.cn 采编人员:星星草
[提问]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;即可
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: