[英]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.