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