CefView / QCefView

A Qt Widget encapsulated CEF view based on QWidget
https://cefview.github.io/QCefView/
GNU Lesser General Public License v2.1
545 stars 144 forks source link

电脑锁屏再解锁,qcefview加载的页面内容不刷新,点击标题栏中的还原按钮后会白屏 #161

Closed xiaopan1983 closed 1 year ago

xiaopan1983 commented 2 years ago

界面: 程序中有个窗体加载qcefview窗体,然后qcefview窗体再加载h5页面, qcefview加载的h5页面中有编辑框和文本框(每秒定时刷新显示时间);

复现操作: 电脑点击“win+L“键进行锁屏操作,然后解除锁屏后,会导致h5页面不刷新,编辑框点击没反应,文本框显示的时间不再跳动;点击标题栏中的还原按钮后会白屏;

恢复操作: 解锁后,如果点击任务栏或点击"alt+tab",又能正常恢复h5页面刷新;或锁屏前先最小化,然后解锁后又恢复显示,也是可以恢复;

请问下如何保证电脑锁屏后,然后解锁,qcefview加载的h5页面不做恢复操作能正常刷新呢,我这边应该如何处理呢?谢谢~

tishion commented 2 years ago

能否按照issue模板补充所有信息?

我这里无法复现你说的问题

xiaopan1983 commented 2 years ago

Describe the bug 【Bug描述】

qt窗体加载v1.07版本qcefview组件,然后qcefview加载写好的本地h5页面,此页面为登录页面,有2个编辑框,可以输入账号和密码; 然后点下电脑键盘win+L锁屏,再重新登录进去;发现账号和密码编辑框都点不能动了,不能再输入账号和密码,必现切换其他应用程序窗体,再切回来,编辑框才能输入账号和密码;

To Reproduce 【复现步骤】

  1. 打开程序,会显示登录h5页面
  2. 点下电脑键盘win+L锁屏
  3. 解除锁屏,重新进去,发现登录h5页面中的账号和密码编辑框都不能编辑,鼠标点编辑框点不动,没反应;

Expected behavior 【正确的预期行为】

解除锁屏,重新进去,登录h5页面中的账号和密码编辑框依然能正常编辑

Screenshots 【截图】

Environment 【BUG产生的环境】

Additional context 【更多额外信息】

...

xiaopan1983 commented 2 years ago
tishion commented 2 years ago

这个还真不好说,你可以看看重新进去之后QCefViwing辅助进程还在不在,或者把log发一下。

xiaopan1983 commented 2 years ago

CefVieWing进程在的,锁屏,然后解除锁屏,debug.log没有特殊日志输出;但是退出程序的时候debug.log会报错;错误如下:[1020/152203.365:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is disabled, ANGLE is [1020/152209.340:INFO:CONSOLE(6295)] "[object Object] config", source: file:///E:/heming/hemingv3/Debug/web/js/index.55050ba8.js (6295) [1020/152209.341:INFO:CONSOLE(61353)] "Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: "/login/account".", source: file:///E:/heming/hemingv3/Debug/web/js/chunk-vendors.99256f9a.js (61353)

xiaopan1983 commented 2 years ago

@tishion 您好,使用你们提供的QCefViewTest的demo也有这个问题,打开QCefViewTest测试程序,画面左边编辑框能输入文字,右边图片能不断刷新fps帧率及图像;但是电脑按"win+L"锁屏后,再进去后,QCefViewTest测试程序,画面左边编辑框不能输入文字,右边图片不能刷新fps帧率及图像,不动了;内容不动后,点最大化或还原后,画面右边显示的fps帧率及图像内容消失;

airheadork commented 2 years ago

我这边也出现类似的情况, 锁屏后进入页面不能动弹, 将窗口最小化再最大化能恢复.

tishion commented 2 years ago

你们没有人说一下使用的是OSR模式还是非OSR模式么?

可以看一下是否因为锁屏后CEF是不是停止绘制了,影响CEF绘制的几个行为:

  1. 窗口被隐藏
  2. 窗口最小化 以上行为会导致QCefView调用CEF的washiden被调用 https://github.com/CefView/QCefView/blob/47ebc27f9fe3df5127e4540b5e71167109b8f9c1/src/details/QCefViewPrivate.cpp#L649

BTW,我只有周末有时间处理这个项目的问题,所以你们还是自己先尝试定位一下问题。

xiaopan1983 commented 2 years ago

@tishion 电脑锁屏前后,窗口既没有被隐藏,也没有最小化,但是不会刷新;目前可以其他方式,比如通过激活切换窗体的方式,或最小化的方式解决此问题;

tonyzhou1985 commented 2 years ago

这个问题 在界面显示出来之后,执行一下 setAttribute(Qt::WA_Mapped)就可以了