找回密码
 立即注册
收起左侧

QWebEngineView崩溃问题

5
回复
92
查看
[复制链接]
累计签到:4 天
连续签到:1 天
来源: 2019-10-7 11:32:12 显示全部楼层 |阅读模式
1Qter豆
Qt升级到5.12.2之后,使用如下代码访问网页必崩溃,程序启动后搜索关键字然后在搜索出的页面点击其中一个链接必崩溃,环境为vs2017+Qt5.12.2+win7系统,麻烦大佬们给点意见。同样代码使用Qt5.9.1版本是可以正常运行的,相关代码如下:1、新建一个Qt主窗口程序;
2、新增WebView.h和WebView.cpp文件,浏览器类;
WebView.h
#ifndef WEBVIEW_H#define WEBVIEW_H
#include<QtWebEngineWidgets/QWebEngineView>
class WebView : public QWebEngineView{    Q_OBJECT
public:    WebView(QWidget *parent = nullptr);    ~WebView();
    void SetUrl(QString strUrl);
protected:    QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);};
#endif // WEBVIEW_H
WebView.cpp#include "webview.h"WebView::WebView(QWidget* parent)    :QWebEngineView(parent){}WebView::~WebView(){}void WebView::SetUrl(QString strUrl){    setUrl(strUrl);}QWebEngineView* WebView::createWindow(QWebEnginePage::WebWindowType type){    return this;}
3、在工程自动生成的MainWindow.ui文件中新增一个QWidget并提升为WebView类设置类名为webView,最后在构造函数中加载一个url,ui->webView->SetUrl(""),url没有权限发,随便填充一个即可;
4、编译运行。


回复

使用道具 举报

累计签到:525 天
连续签到:1 天
2019-10-8 18:20:31 显示全部楼层
WebView 是 Qt 系统里面有的控件,建议换个名字,
回复

使用道具 举报

累计签到:151 天
连续签到:5 天
2019-10-9 10:18:36 显示全部楼层
同问,我是电脑更新了一下后,使用qt,debug模式运行QWebEngineView后提示我很多错误,然后程序异常结束,但是在release模式下运行就没有问题。
回复

使用道具 举报

累计签到:151 天
连续签到:5 天
2019-10-10 16:54:52 显示全部楼层
https://bugreports.qt.io/browse/QTBUG-72845
我的貌似是这个原因,我把qt升级到5.12.5再配置msvc2017  64bit   运行一下好了
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
7 天前 显示全部楼层
驲屋安阮 发表于 2019-10-10 16:54
https://bugreports.qt.io/browse/QTBUG-72845
我的貌似是这个原因,我把qt升级到5.12.5再配置msvc2017  64 ...

我用win10系统使用Qt5.12.2版本会有此问题
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
7 天前 显示全部楼层
跟源码看了下,点击链接在浏览器中会重新打开一个页签的网页跳转才会调用void WebContentsDelegateQt::AddNewContents(content::WebContents* source, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked)方法,此方法会调用QWebEngineView * WebView::createWindow(QWebEnginePage::WebWindowType type)的方法,Qt5.9.1重载此方法return this可以在已经启动的QWebEngineProccess.exe中加载链接的url,使用5.12.2之后需要打开新页面的链接参考官方的例子重新new一个QWebEngineView,这次时候会再起一个QWebEngineProcess.exe去加载链接的url,此时启动的是两个QWebEngineProcess.exe进程,源码有些看不懂,不知道为什么新版本的Qt为什么不能和之前一样在同一个进程中加载一个点击在浏览器中会重新打开一个页签的链接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册