void QWebView::loadFinished(bool ok) ok всегда ложно

Я использую сигналы и слоты Qt. Я использую следующий вызов сигнального слота.

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

Когда испускается сигнал loadFinished, вызывается слот finishedLoadNotification. В finishedLoadNotification переменная 'ok' всегда равна false. Я хочу знать, где значение «ok» устанавливается равным false. Из кода мне не удалось найти значение «ОК». Не могли бы вы помочь мне узнать, где переменная «ok» имеет значение false.


person mspms    schedule 26.09.2016    source источник


Ответы (2)


Из документов:

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

Таким образом, эта переменная устанавливается, когда сигнал испускается QWebView. Если ok = false, то это просто означает, что произошла ошибка и вам нужно ее обработать. Если ok = true, это значит, что все прошло хорошо.

Если вы хотите получить более подробную информацию о вашей ошибке, вы можете посмотреть здесь:

Как получить подробное сообщение об ошибке когда QTWebKit не может загрузить страницу?

person demonplus    schedule 26.09.2016

Логическое значение просто означает, произошла ошибка или нет. Вы не можете проверить правильность загрузки, обрабатывая ход загрузки вашей веб-страницы. Давайте воспользуемся 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);
     }
}
person mohabouje    schedule 26.09.2016
comment
Сигнал испускается фреймворком QT. Мы не испускаем сигнал в коде. Следовательно, мы не можем узнать, где значение ok установлено в false. - person mspms; 26.09.2016