• 4596阅读
  • 5回复

请高手指教关于定时器的问题 [复制链接]

上一主题 下一主题
离线ericaq
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-12
我的代码如下,我希望实现的是每隔1秒执行slot函数,但是程序只有第一循环是1秒后执行的slot函数,之后就是没有间隔的执行着slot函数,不知道问题在那儿,请高手指教。
void MyMainWindow::slot()
{
        printf("in slot\n");
}

int main(int argc,char **argv)
{

    QApplication a(argc,argv);
    MyMainWindow w;

    a.setMainWidget(&w);
    w.show();
while(1)
{
    QTimer::singleShot(3000, &w, SLOT(slot()));
    a.processEvents();
}
        return 0;
}
离线yangfanxing
只看该作者 1楼 发表于: 2010-04-12
while(1)???这还不循环啊~~~

QTimer::singleShot这个就是在“每隔”了。。。
PHPWind好恶心。。。不想看这种界面。。。
离线eclair899
只看该作者 2楼 发表于: 2010-04-12
不知道是不是应该用timeout
离线yangfanxing
只看该作者 3楼 发表于: 2010-04-12
引用第2楼eclair899于2010-04-12 22:40发表的  :
不知道是不是应该用timeout

不是timeout,要结束的话用stop () 之类的
PHPWind好恶心。。。不想看这种界面。。。
离线ericaq
只看该作者 4楼 发表于: 2010-04-13
是循环的,但是循环的间隔时间不对。
我先试试,谢谢楼上提示。
离线ericaq
只看该作者 5楼 发表于: 2010-04-13
我把程序改成这样:
while(1)
{
//    QTimer::singleShot(3000, &w, SLOT(slot()))
      QTimer *timer = new QTimer( &w );
      QObject::connect( timer, SIGNAL(timeout()), &w, SLOT(slot()));
      timer->start( 2000, TRUE );
      timer->stop();
    
    a.processEvents();
}
    return 0;
}
程序就进不去slot函数,我把stop 注释掉的话,就会是一直不停执行slot函数,然后停两秒,再继续重复执行slot函数。我将创建QTimer对象的那行放到while外面,就又不执行slot函数了。哎,刚刚接触QT,所以有点摸不着头脑,麻烦高手指教。
快速回复
限100 字节
 
上一个 下一个