繁体   English   中英

QTimer超时信号不发出

[英]QTimer timeout signal doesn't emit

我正在使用QTimer并且超时信号不发出。

这是我的代码:

    QTimer* receiveTimer = new QTimer();
    receiveTimer->setInterval(1000);
    connect(receiveTimer, SIGNAL(timeout()), this, SLOT(timeout()));

    QByteArray res;
    inWait = true;
    receiveTimer->start();

    qDebug() << "Before while";

    while (!res.contains("OK\r\n") && inWait)
        qDebug() << res.append(sPort->read(1));

    qDebug() << "After while";

    receiveTimer->stop();

最初,我在类构造函数中定义了计时器,但是它也没有起作用。

您可以将其添加到循环中:

QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

要么

QApplication::processEvents(QEventLoop::AllEvents, 100);

我在qt中的“睡眠”功能:

void WebView::delay(int sec)
{
    QTime dieTime= QTime::currentTime().addSecs(sec);
    while (QTime::currentTime() < dieTime)
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

}

如果我正确理解您,那么您想要的不是这样的东西:

QByteArray res;

QTime dieTime= QTime::currentTime().addSecs(sec);
while (!res.contains("OK\r\n") && QTime::currentTime() < dieTime) {
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
    qDebug() << res.append(sPort->read(1));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM