- vs2013中的Qt5插件从Qt Project Settings中没有能引入QWebEngineView和QWebChannel的模块,我们可以在vs2013中手动加入。
- 附加包含目录:
(QTDIR)\include\QtWebEngineWidgets,
(QTDIR)\include\QtWebChannel
附加依赖项:Qt5WebEngineWidgetsd.lib, Qt5WebChanneld.lib - page()->mainFrame()->evaluateJavaScript(str);
=> page()->runJavaScript(str); - QWebSettings
=> QWebEngineSettings - QWebHistory
=> QWebEngineHistory - page()->mainFrame()->load
=> page()->load -
Incorrect warning MSB8027 reported for files excluded from build
vs2013更新到update5,或者
文本编辑器打开project插入: IgnoreWarnCompileDuplicatedFilename
…
true
…
-
evaluateJavaScript
=> runJavaScript - evaluateJavaScript返回值
=> 使用异步回调接受[](const QVariant &val) { } -
设置QWebEngineView背景色
=> page()->setBackgroundColor(QColor(“#0f0f10”)); -
Qt WebEngine ICU data not found The application MAY NOT work. Installed Qt WebEngine locales directory not found at location
=> 增加resources和translations目录,具体放的位置可以看日志哪里可以找到它,可以通过qt.conf文件来配置所在路径 -
QWebEngineView调试
方法1:html中加入https://getfirebug.com/firebug-lite.js, 在页面上按F12打开调试面板
缺点:这个js文件比较大,载入的时候影响效率;功能有限;
方法2:在程序开始的时候qputenv(“QTWEBENGINE_REMOTE_DEBUGGING”, 9000),之后在chrome中打开网址:localhost:9000
就可以看到QWebEngineView加载的html了,点击相应的html可以打开chrome的开发者工具;
这个方法比上面的好得多。 -
linkClicked(QUrl)
重载QWebEnginePage实现acceptNavigationRequest接口
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 同步返回runJavaScript结果,谨慎使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
在QWebEngineView重载函数contextMenuEvent中不能调用!
runJavaScript回调中不能进行长时间的操作,否则会阻塞JavaScript代码执行,如:
- 1
- 2
- 3
- 4
解决办法,定义信号和槽函数,使用QueuedConnection的方式connect,在slotJavaScriptResult中处理耗时操作。
- 1
- 2
- 3
- runJavaScript时机
- 1
- js调用C++时机
- 1
- 2
- 3
- 4
- 5
-
web页面,右键鼠标点击的元素
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- web页面,获取选中的html
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- QWebEngineView接收drop事件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- web打印日志
重载QWebEnginePage中的javaScriptConsoleMessage函数很有用,可以接收到js打印的日志(如:console.log); - 一个QWebEnginePage对应一个QtWebEngineProcess.exe进程,所以当web页窗口不显示的时候最好是销毁掉,不要隐藏;
- 某些机器上QWebEngineView内容显示不出来可能跟设置背景色有关;
- js与c++之间互调返回值处理
QWebEngineView中c++调用js代码是通过异步回调的方式获取的;
js调用c++的函数并不能获取c++函数的返回值,可以通过c++发送一个信号给js来返回。