查看完整版本: [-- 关于定时器和延时 --]

QTCN开发网 -> Qt基础编程 -> 关于定时器和延时 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

houjie 2018-04-26 09:15

关于定时器和延时

  1. Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
        connect(&timer,SIGNAL(timeout()),this,SLOT(slot_timeout()));
        connect(&timer1,SIGNAL(timeout()),this,SLOT(slot_timeout1()));
    }

    Widget::~Widget()
    {
        delete ui;
    }

    void Widget::on_pushButton_clicked()
    {
        qDebug()<<"click";
        timer.start(20000);
        count1 = 20;
        timer1.start(1000);
    }


    void Widget::slot_timeout()
    {
        qDebug()<<"timeout";
        ui->textEdit->setText(QString::number(count++));
        while(true){
            QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
        }
        count1=20;
    }
    void Widget::slot_timeout1()
    {
        count1--;
        ui->lineEdit->setText(QString::number(count1));
    }

    void Widget::on_pushButton_2_clicked()
    {
        qDebug()<<"on click start";
        while(true){
            QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
        }
        qDebug()<<"on click end";
    }
请教大神,为什么上面代码中slot_timeout()这个函数不会重复执行?


夜雨触花 2018-04-26 09:55
你都While(true)了,退都退不出来,怎么重复执行。

houjie 2018-04-26 10:30
搞懂了,还是对信号与槽不了解造成的困惑
connect(&timer,SIGNAL(timeout()),this,SLOT(slot_timeout()));默认是DirectConnection,若改成QueuedConnection就会重复了


查看完整版本: [-- 关于定时器和延时 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled