我是QT的新手并且一直在尝试创建测试浏览器。我现在要做的是处理基于js的弹出请求。阅读完QT文档后,我了解到我需要重新实现QWebView :: createWindow方法才能做到这一点。
现在我已经重新实现了这个方法,但是当我尝试点击触发弹出窗口的链接时似乎没有调用它。
任何人都可以帮助我吗?我是否需要继承WebView和WebPage类?如果是这样,我该怎么做?我对QT很陌生,我已经完成了大量的搜索,却一无所获。
提前感谢所有提示和建议!
答案 0 :(得分:4)
您还记得设置以下选项吗?
view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
并且不要忘记调用父类createWindow()方法。文档中有一个注释:
注意:如果是createWindow()方法的话 相关页面重新实现, 除非,否则不调用此方法 明确地这样做了 重新实现。
答案 1 :(得分:0)
没关系我的第二个问题(在评论区域),这是我捕捉新窗口请求所做的事情(非常感谢Duncan的提示!):
page()->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
这是在自定义WebView类的启动过程中使用的。
希望这对某人有用。 谢谢!