特定网站在 QWebView 中抛出异常
Posted
技术标签:
【中文标题】特定网站在 QWebView 中抛出异常【英文标题】:Specific websites throwing an exception in QWebView 【发布时间】:2016-01-26 16:39:20 【问题描述】:在运行我的代码时,我在尝试使用 QWebView 时遇到写访问冲突异常:
重现错误的最小可编译代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtWebKitWidgets/QWebView>
#include <QUrl>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
QWebView *wv = new QWebView(this);
wv->load(QUrl("http://steamcommunity.com/"));
setCentralWidget(wv);
MainWindow::~MainWindow()
delete ui;
pro文件还包括webkitwidgets
和network
:
QT += core gui webkitwidgets network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyApp
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
错误提示
我得到的错误如下所示:
ASSERTION FAILED: leftSide->category() != CalcOther && rightSide->category() != CalcOther
css\CSSCalculationValue.cpp(290) : WebCore::CSSCalcBinaryOperation::create
1 0354A5B7
2 02E58E41
3 02E59520
...
我无法提供堆栈跟踪,因为错误在一个 Qt 文件中,但这里是反汇编:
该错误仅发生在特定网页(例如 steamcommunity.com)上,而不会发生在其他网页上。是否有可能某些网站只是破坏了 Qt 的 API?
编译器:MSVC2013 x86 Qt 版本:Qt 5.5.0【问题讨论】:
这是一个 Qt 错误。您必须构建一个调试 Qt 以获得合理的回溯,然后报告它。 如何报告错误?他们会尽快修复它还是我应该使用旧版本的 Qt? 付费支持有其好处 :) 在bugreports.qt.io 报告错误 请注意,您应该使用最新的 5.5.1,而不是 5.5.0。 Qt WebKit 是一个已弃用的模块,您应该改用 WebEngine。 @MrEricSir 谢谢,我会看看。 【参考方案1】:原来这个错误实际上是一个Qt错误。 它的状态可以在这里查看:Qt Bug Report
使用新的Qt WebEngine Widgets 模块可以很好地替代我。
【讨论】:
对于 Qt 开发团队来说,这是一种耻辱,即使在 Qt 5.5.1 中,Web Kit 也是如此错误。他们只是忽略了这个渲染器:(。你使用哪个版本的 Qt Web 引擎?我必须支持 Windows XP,但是 Qt 5.5.1 是 Web Engine 可以在 Windows XP 中工作的最后一个版本。 @ilya 我当时使用的 Qt 版本是 Qt 5.5.0。以上是关于特定网站在 QWebView 中抛出异常的主要内容,如果未能解决你的问题,请参考以下文章