【问题标题】:Specific websites throwing an exception in QWebView特定网站在 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文件还包括webkitwidgetsnetwork

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 谢谢,我会看看。

标签: c++ qt access-violation qwebview


【解决方案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。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2012-01-24
  • 2013-10-11
相关资源
最近更新 更多