2016-09-26 9 views
0

Qtシグナルとスロットを使用しています。私は以下のシグナルスロットコールを使用します。void QWebView :: loadFinished(bool ok)okは常にfalseです。

connect(this, SIGNAL(loadFinished(bool)), this, SLOT(finishedLoadNotification(bool))); 

信号loadFinishedが放出されると、スロットfinishedLoadNotificationが呼び出されます。 finishedLoadNotificationでは、変数 'ok'は常にfalseです。私は 'ok'の値がどこにfalseに設定されているのか知りたい。コードから、私は 'ok'の価値を見つけることができませんでした。変数 'ok'がfalseに設定されている場所を見つけ出すのを手伝ってください。 Qtのdocsから

答えて

0

OK]をクリックして、負荷が成功したか、何らかのエラーが発生したかどうかを示します。

この変数は、信号がQWebViewによって放出されたときに設定されます。 ok = falseの場合は、エラーが発生したため、処理する必要があることを意味します。 ok = trueの場合、これはすべてがうまくいったことを意味します。

あなたは、エラーの詳細を取得したい場合は、ここを見て:

How to get detailed error message when QTWebKit fails to load a page?

0

ブールだけでエラーが起こったかではないことを意味します。あなたのウェブページの読み込みの進行状況を処理することによって、正しい読み込みの進行状況を確認することはできません。 loadProgress(int progress)を自分のスロットに接続しましょう:

void MyCalss::handleProgress(int progress) { 
    bool loaded = (progress == 100); 
    if (_loaded != loaded) { // State changed, let's emit a signal 
     _loaded = loaded; 
     emit webViewLoaded(loaded); 
    } 
} 
+0

信号はQTフレームワークによって放出されます。私たちはコード内でシグナルを発していません。したがって、okの値がfalseに設定されている場所を見つけることはできません。 – mspms