2016-04-30 15 views
2

私はQtで簡単なネットワークファイル転送アプリケーションを書いていますが、私はタイムアウトを実装しようとしています。Qtでの単純なネットワークタイムアウト(C++)

は基本的に、私が欲しいのは、以下の、

while(!AcknowledgeReceived) 
{ 
if(timeout) 
    { 
    break; 
    } 
} 

は現在、タイムアウトがQtimerによって変更されますが、ループの実行が開始されると、それは残しません。 (スロットQTimerが実行されても実行されません) これはスレッドと関係がありますが、これを正しく実装するには新しい方法です。

私の質問は、タイムアウトを反転するメソッドが実行されていることを確認する方法、または別の方法で同じ結果を得る方法です。

答えて

0

QNetworkAccessManager netman; 
QNetworkRequest request{url}; 
QNetworkReply* reply = netman.post(request, data); 

while (!reply->isFinished()) 
{ 
    QThread::msleep(1); 
    qApp->processEvents(); 
} 
1

このようにループしているときは、関数の呼び出し時にQtメインイベントループが実行されません。

スロットと信号のみを使用するようにアプリケーションを再設計する必要があるため、ループは必要ありません。または、process the Qt event yourselfにする必要があります。例えば