近期项目中需要采用Qt展示网页功能,于是就想到了QWebEngineView类,但是QWebEngineView有时能运行,有时又会崩溃,如下:
但Qt官方自带的例子即Qt安装目录下的Examples\Qt-X.XX.X\webenginewidgets( 其中X为Qt版本号)不崩溃,为何自己的会崩溃,网上也有很多人提到崩溃的问题。在windows下可用下述方法解决:
不用QWebEngineView,而采用微软的Microsoft Web Browser的ocx控件替代QWebEngineView,如下是代码:
auto webWidget = new QAxWidget;
//设置ActiveX控件为IEMicrosoft Web Browser
//设置ActiveX控件的id,最有效的方式就是使用UUID
//此处的{8856F961-340A-11D0-A96B-00C04FD705A2}就是Microsoft Web Browser控件的UUID
webWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
webWidget->setObjectName(QString::fromUtf8("webWidget"));//设置控件的名称
webWidget->setFocusPolicy(Qt::StrongFocus);//设置控件接收键盘焦点的方式:鼠标单击、Tab键
webWidget->setProperty("DisplayAlerts", false); //不显示任何警告信息。
webWidget->setProperty("DisplayScrollBars", true); // 显示滚动条
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(webWidget);
setLayout(mainLayout);
// 加载百度主页
webWidget->dynamicCall("Navigate(const QString&)", "http://www.baidu.com");
setWindowState(Qt::WindowMaximized);//最大化
注意:上面用到了Qt的ActiveX技术,故需要 在Qt模块勾选ActiverQt container
说明:下面链接的文章都不能解决QWebEngineView崩溃问题: