-
Notifications
You must be signed in to change notification settings - Fork 116
高dpi下cefveiw显示问题 #32
Comments
@WilliamZhangZhe QCefView主要解决的一个问题是native的CEF窗口和Qt窗口的融合问题,关键部件是QCefWindow 融合的方法并不是简单的把CEF的native窗口作为child添加到QCefWindow,虽然他们具有父子关系,但是CEF的native窗口的绘制并没有交给QCefWindow去管理,QCefWindow只负责把CEF的native窗口实时的移动到QCefWindows的client区域(大小,位置等)。这个过程是获取到QCefWindow的size,然后利用MoveWindow去设置CEF的native窗口。 我还没有去重现这个问题,但是我猜想应该是,Qt启用了DPI缩放,但是通过size函数获取到的QCefWindow的宽和高的数值仍然是没有经过缩放因子处理的数值。 解决这个问题的思路: 然后有两种处理方法:
希望对你有帮助,我有空的时候会尝试调试下 |
hi,非常感谢您的回复,我这边测试情况是cef在默认情况下是应用缩放的,如果想要关闭可以添加“--high-dpi-support=1 --force-device-scale-factor=1”运行参数,(亦可通过CefEnableHighDPISupport启用),您回复的关于navie窗口适应dpi缩放的qt窗口的方案一正是我所遇到问题的解决方案,非常感谢!! |
我也遇到同样问题,能否分享下解决代码;另我想升级到CEF 3.3239 X64,部分接口已过时,API找到有替代方法不大会用,惭愧。。 |
你按照tishion所提及的解决办法修改即可,(1.获取QCefWindow的size数值然后 newHeight = height * scale,newWidth = width * scale, 然后用这个newHeight和newWidth去调整CEF的natvice窗口的大小)这个是我应用的方案,在CCefwindow.cpp 中依据当前系统的dpi scale value 修改updateCefBrowserWindow内的窗口大小设置即可 |
感谢,我按您的方法尝试下。在VS2015里,CCefwindow.cpp没包含在include的头文件项目里,把它忽略了; |
@liulinhere 把你修改的代码贴出来一下 |
@liulinhere , 你得qcefwing的编译清单文件选项上添加上“高dpi支持” |
William 能否把你的修改提交一个pr?
Get Outlook for Android<https://aka.ms/ghei36>
…________________________________
From: WilliamZhangZhe <notifications@github.com>
Sent: Thursday, January 25, 2018 7:02:43 PM
To: tishion/QCefView
Cc: Sheen Tian; Comment
Subject: Re: [tishion/QCefView] 高dpi下cefveiw显示问题 (#32)
Reopened #32<#32>.
―
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#32 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AFmRcmI36KxWkj1k62eXZ_8SEip7WSSFks5tOF9TgaJpZM4Rm4-Q>.
|
我的解决办法是: 步骤二:设置qcefwing工程和QCefViewTest工程支持高dpi 步骤三:添加获取系统dpi-scale 的接口代码,例如我的是 float windowsDpiScaleY() { 步骤四:修改QCefWindow.cpp下的 updateCefBrowserWindow()实现如下: int dpi_x_scale = round(windowsDpiScaleX());
} 以上是我的具体的实现方法,希望可以帮到你 |
我选择round的方式是因为在windows平台下实测125%实际会按照100%的比例放大,150% 175% 200% 实际会按照200%放大,不知道其他平台是否也是这样 |
是的,QT的理解是四舍五入,4K,WIN10默认是250%,QT为3。
}` |
放上 QCefViewSDK 试下,VS2015 X86+QT5.9.3 |
为什么我用这种方法做了,网页有时显示 有时不显示。。 |
125%不缩放这个问题似乎是Chromium的BUG,详见 https://bugs.chromium.org/p/chromium/issues/detail?id=410696 |
不是chrome的,是qt5.9的版本对文本缩放的支持只能是整数倍,会四舍五入,5.12后开始支持小数倍 |
您好,我这边有在高dpi下(dpi = 126 等等)使用cefview显示网页,显示的网页的窗口大小与实际窗口大小不符,会出现3/4的区域为空白或者透明,请问是什么问题呢?我已启用qt的高dpi显示设置(Application::setAttribute(Qt::AA_EnableHighDpiScaling);)
The text was updated successfully, but these errors were encountered: