簡體   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