• 2540阅读
  • 2回复

[提问]关于定时器和延时 [复制链接]

上一主题 下一主题
离线houjie
 

只看楼主 正序阅读 楼主  发表于: 2018-04-26
  1. Widget::Widget(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::Widget)
  4. {
  5.     ui->setupUi(this);
  6.     connect(&timer,SIGNAL(timeout()),this,SLOT(slot_timeout()));
  7.     connect(&timer1,SIGNAL(timeout()),this,SLOT(slot_timeout1()));
  8. }
  9. Widget::~Widget()
  10. {
  11.     delete ui;
  12. }
  13. void Widget::on_pushButton_clicked()
  14. {
  15.     qDebug()<<"click";
  16.     timer.start(20000);
  17.     count1 = 20;
  18.     timer1.start(1000);
  19. }
  20. void Widget::slot_timeout()
  21. {
  22.     qDebug()<<"timeout";
  23.     ui->textEdit->setText(QString::number(count++));
  24.     while(true){
  25.         QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
  26.     }
  27.     count1=20;
  28. }
  29. void Widget::slot_timeout1()
  30. {
  31.     count1--;
  32.     ui->lineEdit->setText(QString::number(count1));
  33. }
  34. void Widget::on_pushButton_2_clicked()
  35. {
  36.     qDebug()<<"on click start";
  37.     while(true){
  38.         QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
  39.     }
  40.     qDebug()<<"on click end";
  41. }
请教大神,为什么上面代码中slot_timeout()这个函数不会重复执行

离线houjie

只看该作者 2楼 发表于: 2018-04-26
搞懂了,还是对信号与槽不了解造成的困惑
connect(&timer,SIGNAL(timeout()),this,SLOT(slot_timeout()));默认是DirectConnection,若改成QueuedConnection就会重复了
离线夜雨触花

只看该作者 1楼 发表于: 2018-04-26
你都While(true)了,退都退不出来,怎么重复执行。
快速回复
限100 字节
 
上一个 下一个