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 总是假的的主要内容,如果未能解决你的问题,请参考以下文章