2016-09-26 11 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.

ответ

0

С Qt docs:

хорошо покажет, был ли груз успешным или произошла какая-либо ошибка.

Таким образом, эта переменная устанавливается, когда сигнал испускается 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