void QWebView::loadFinished(bool ok) ok 总是假的

Posted

技术标签:

【中文标题】void QWebView::loadFinished(bool ok) ok 总是假的【英文标题】:void QWebView::loadFinished(bool ok) ok is always false 【发布时间】:2016-09-26 09:47:40 【问题描述】:

我正在使用 Qt 信号和插槽。我使用以下信号槽调用。

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

当信号loadFinished 发出时,槽finishedLoadNotification 被调用。在finishedLoadNotification 中,变量“ok”始终为false。我想知道 'ok' 的值在哪里被设置为 false。从代码中,我无法找到'ok'的值。你能帮我找出变量 'ok' 设置为 false 的位置吗?

【问题讨论】:

【参考方案1】:

来自Qtdocs:

ok 将指示加载是否成功或发生任何错误。

所以这个变量是在QWebView 发出信号时设置的。如果是ok = false,就说明发生了错误,需要处理。如果ok = true,则表示一切顺利。

如果您想了解有关错误的更多详细信息,可以查看此处:

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

【讨论】:

【参考方案2】:

布尔值只是表示错误发生与否。您无法通过处理网页的加载进度来检查正确的加载进度。让我们使用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);
     

【讨论】:

信号由 QT 框架发出。我们没有在代码中发出信号。因此,我们无法找出 ok 的值在哪里设置为 false。

以上是关于void QWebView::loadFinished(bool ok) ok 总是假的的主要内容,如果未能解决你的问题,请参考以下文章

错误:从‘void*’到‘void* (*)(void*)’的无效转换 - pthreads

void类型及void指针

Void & void Void用在泛型

void类型和void* 的用法

void*和void类型

C中的“void (*f)(void)”是啥意思