このQtコードが無限ループに陥ることは可能ですか?
QNetworkAccessManager m;
QNetworkReply *reply = m.get(QNetworkRequest(QUrl("http://www.example.org/")));
QEventLoop loop;
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
qDebug() << reply->readAll();
delete reply;
これは基本的に、Webページのコンテンツを表示するための「同期」方法です。
私はそれを使用して問題を観察していませんが、私は次のシナリオを検討しました:
- の
finished
信号は、イベントループが作成され、との間の信号スロット接続が確立さreply
れる前に発行されます。finished
quit
- そのポイントから前方に信号が発信されないため、トリガーされることはありません
quit
loop.exec()
継続的にループします
それが発生する可能性はありますか、それともQtイベントループがどのように機能するかについて何か理解していませんか?