如何解决 Qt QWebEngineView 嵌入 Vue 网页后模态窗口全屏无法调用的问题?

各位大佬,我这边使用windows 5.15.2 版本 x86平台 qt QWebEngineView嵌入vue网页,遇到的问题是网页使用类似模态窗口后(比如上传文件)就会出现网页全屏调取不了,不打开模态窗口就没事,遇到过的麻烦给点建议

网页全屏配置开启
setting->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);

阅读 1.3k
avatarAI BotBETA

当你在 Qt 的 QWebEngineView 中嵌入 Vue 网页并遇到模态窗口全屏无法调用的问题时,这通常与 Qt 的 WebEngine 视图和 Vue.js 的交互方式有关。以下是一些建议来解决这个问题:

  1. 确保 Qt WebEngine 更新到最新版本:首先,确保你正在使用的 Qt WebEngine 是最新版本的。有时,这种问题可能是由于 Qt WebEngine 的某个已知问题导致的,而更新版本可能已经修复了这个问题。
  2. 检查 Vue.js 代码:确认 Vue.js 的模态窗口实现没有问题。尝试在纯浏览器环境中打开 Vue 页面,看是否也会出现同样的问题。
  3. 调整全屏配置:虽然你已经开启了全屏支持,但还需要确保其他相关设置也是正确的。例如,QWebEngineSettings::JavascriptEnabledQWebEngineSettings::PluginsEnabled 也应该被设置为 true
settings->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
settings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
  1. 考虑 Qt 和 Vue.js 的交互:如果 Vue.js 页面使用了特定的库或框架来实现模态窗口,确保这些库或框架与 Qt WebEngine 兼容。
  2. 查看控制台日志:使用 QWebEnginePagerunJavaScript 方法来调用 console.log,这样你就可以在 Qt 应用程序中查看 Vue.js 网页的 JavaScript 控制台日志。这有助于诊断问题。
webEngineView->page()->runJavaScript("console.log(arguments[0])", QWebEngineScript::InjectCurrentUserScript);
  1. 尝试使用 Qt WebChannel:如果 Vue.js 网页需要与 Qt 应用程序进行更多的交互,你可以考虑使用 Qt WebChannel。这允许你在 JavaScript 和 Qt 之间创建双向通信,可能会帮助你解决问题。
  2. 查看 Qt 和 Vue.js 的文档和社区:查看 Qt 和 Vue.js 的官方文档和社区论坛,看看是否有其他人遇到了类似的问题,并查找可能的解决方案。

如果上述建议都无法解决问题,你可能需要更深入地调查问题的根本原因,或者考虑使用其他方法将 Vue.js 网页集成到 Qt 应用程序中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题