带有 Windows Aero 主题的 QWebEngineView 比例错误

Posted

技术标签:

【中文标题】带有 Windows Aero 主题的 QWebEngineView 比例错误【英文标题】:Wrong scale for QWebEngineView with Windows Aero theme 【发布时间】:2018-05-15 14:49:31 【问题描述】:

如果启用了 aero 主题(默认),我们会在 Windows 7 上遇到 QWebEngineView 问题。一旦 QWebEngineView 被渲染,整个窗口就会以错误的比例渲染。切换到基本主题时,一切都按预期呈现。

我使用的 Simpe 测试用例:

import sys

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings

app = QApplication(sys.argv)
web = QWebEngineView()
web.load(QUrl("https://www.qt.io/"))
web.show()

sys.exit(app.exec_())

在 Chrome 中,页面如下所示:

但在 QWebEngineView 中,整个窗口被剪切并使用了错误的比例:

更糟糕的是: 在 PyQt UI 中添加 QWebEngineView 会以这种方式缩放整个 UI 窗口。

我检查了以下环境变量:

AA_Use96Dpi=False
AA_UseHighDpiPixmaps=False
AA_UseDesktopOpenGL=False
AA_UseOpenGLES=False
AA_UseSoftwareOpenGL=False
AA_ShareOpenGLContexts=True
AA_EnableHighDpiScaling=False
AA_DisableHighDpiScaling=False

此外,我尝试在 qt.conf 中使用 0-2 的值设置 dpiaareness,而没有任何更改。

欢迎任何提示/帮助。

谢谢

【问题讨论】:

这是我得到的:drive.google.com/file/d/1ubhOKxY4PmwFL_c3doLXqEOTXvoo0onx/…,指出 PyQt5 的版本会很有趣,QWebEngine 在 Windows 和 Mac OS 的 Qt 5.9 的第一个版本中存在驱动程序问题,我建议您报告错误。 感谢测试!该效果仅在 win7 aero 主题和任何可用/正在运行的 pyqt5 版本(5.10.0、5.9.2)中出现。我的版本:PyQt5==5.9.2 Python 3.5.3 创建bugreports.qt.io/browse/QTBUG-68318 我建议你将 PyQt 的版本更新到 5.10.1 与 pyqt 5.10.1 相同 【参考方案1】:

它指出更新到最后一个英特尔显卡驱动程序解决了这个问题(不幸的是,这个版本的显卡驱动程序不稳定/在其他情况下会产生蓝屏,为什么我们到目前为止使用以前的版本)。感谢@eyllanesc 的提示!

我的结论是尽快切换到另一个框架,只要 QT 依赖于 OpenGL(用于嵌入 QtWebEngineView)——它对 Windows 的支持非常差,并且依赖于显卡驱动程序。我们不能指望 QT 中这个概念在不久的将来会发生变化。背景可以在这里找到:Is there any way to use QtWebEngine without OpenGL?

【讨论】:

以上是关于带有 Windows Aero 主题的 QWebEngineView 比例错误的主要内容,如果未能解决你的问题,请参考以下文章

旧版 MFC 应用程序在具有 Aero 主题的 windows7 操作系统上无法正常运行,但在经典主题下表现良好

[WPF自定义控件库]以Button为例谈谈如何模仿Aero2主题

使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等

解决Windows 7中“使用Aero Peek预览桌面”变灰色的方法

带有 WPF 的 Aero 玻璃框架上类似于 Windows 资源管理器的搜索框

带有WPF的Aero玻璃框架上类似Windows资源管理器的搜索框