《QDebug 2025年11月》

一、Qt Widgets 问题交流

1.QWebEngineView缓存问题

测试版本:Qt5.15.2+MSVC2019 32bit

QWebEngine的缓存有点邪门,直接设置NoCache是没有效果的,目前测试可用的两种设置:

a.使用缓存,可以指定缓存目录:

复制代码
    QWebEngineProfile *profile = page->profile();
    profile->setHttpCacheType(QWebEngineProfile::DiskHttpCache);
    profile->setPersistentCookiesPolicy(QWebEngineProfile::AllowPersistentCookies);
    profile->setCachePath(qApp->applicationDirPath() + "/web/cache");
    profile->setPersistentStoragePath(qApp->applicationDirPath() + "/web/storage");

b.不使用缓存,new一个不带name构造参数的profile:

cpp 复制代码
    QWebEngineProfile *profile = new QWebEngineProfile(this);
    QWebEnginePage *page = new QWebEnginePage(profile, ui->webView);
    ui->webView->setPage(page);

使用缓存时,遇到个问题就是打开多次exe访问某个网页时,后面打开的webview加载这个网页会卡一会儿,不过我没法调试这个页面,不知道是网页读写配置文件导致卡还是WebGL导致的。同一个进程中多个webview使用同一个profile是正常的。

2.QWebEngineView渲染问题

测试版本:Qt5.15.2+MSVC2019 32bit

默认的AA_UseDesktopOpenGL渲染,在部分电脑会遇到显示空白渲染不出来,还会遇到异常崩溃

使用AA_UseSoftwareOpenGL,界面上WebGL渲染的内容没加载出来

使用AA_UseOpenGLES的兼容性比另外两个好那么一丢丢

3.QSlider和QScrollBar的鼠标滚动

QSlider默认是上大下小,左小右大,鼠标往上滚是数值加大

QScrollBar默认是上小下大,左小右大,鼠标往上滚是数值减小

修改invertedControls属性会使滚动行为反过来,ScrollBar默认是true,设置false后鼠标往上滚数值会增大

修改invertedAppearance属性会使最大和最小的位置反过来,如原本上大下小的变成上小下大

当焦点在slider上时,通过pageup、pagedown按钮或者点击到滚动栏上移动的数值为pageStep,通过左右方向键按钮移动的数值为singleStep

对于滚动时增减计算,网友总结:

注意:在windows 系统中,鼠标移动到slider 上使用滚轮操作时的默认步长是 min(3*singleStep, pageStep), 但Mac 系统下貌似只是 3*singleStep,qt 源码中通过宏 Q_WS_MAC 来区分两段代码。

https://blog.csdn.net/perry_xiao/article/details/42192441

这也是为什么命名singleStep是1,pageStep是10,滚动一下却加减了3

看了下源码,这个3的系数是通过WheelScrollLines Hint预定义的,默认是3,在Windows上也是通过获取系统的滚动行数来获取的:

复制代码
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, pulScrollLines, 0)

对于鼠标滚动方向,我们也可以拦截wheelEvent给他取反:

cpp 复制代码
bool MyDialog::eventFilter(QObject *target, QEvent *evt)
{
    if (target && evt && evt->type() == QEvent::Wheel) {
        QWheelEvent *wheel = static_cast<QWheelEvent *>(evt);
        wheel->accept();
        QWheelEvent reversed(
            wheel->position(),
            wheel->globalPosition(),
            -wheel->pixelDelta(),
            -wheel->angleDelta(),
            wheel->buttons(),
            wheel->modifiers(),
            wheel->phase(),
            wheel->inverted(),
            wheel->source()
            );
        target->event(&reversed);
        return true;
    }
    return QDialog::eventFilter(target, evt);
}

二、Qt Quick 问题交流

1.

三、其他

1.QWindowKit无边框带WebView或者OpenGLWidget时,Win7标题栏显示错位

测试版本Qt5.15.2+MSVC2019 32bit+QWindowKit 2025年11月22日版本

使用QWindowKit库实现无边框,界面中使用到WebView,放到Windows7电脑后标题栏显示异常,界面被挤下去一点,但是点击效果还是在原位置触发:

如果是在虚拟机运行Win7渲染是正常的,库作者的回复是:OpenGL会触发这种错位问题,虚拟机里没问题是因为虚拟机里走的软件渲染。

经过测试,设置成AA_UseOpenGLES就没有错位问题。

相关推荐
sycmancia8 小时前
Qt——编辑交互功能的实现
开发语言·qt
qq_4017004113 小时前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
小短腿的代码世界13 小时前
信号路由风暴:Qt算法交易系统的高频信号分发架构
qt·算法·架构
郝学胜-神的一滴16 小时前
Qt 高级开发 010: 从跨界面传值到自定义信号
开发语言·c++·qt·程序人生·用户界面
Hua-Jay19 小时前
OpenCV联合C++/Qt 学习笔记(二十三)----图像校正及单目位姿估计
c++·笔记·qt·opencv·学习·计算机视觉
mirror_zAI20 小时前
C++ 仿 QQ 聊天室项目:Qt 客户端 + epoll 服务端 + Reactor 架构(含源码)
c++·qt·架构
Hua-Jay21 小时前
OpenCV联合C++/Qt 学习笔记(二十四)----差值法检测移动物体、稠密光流法跟踪移动物体及稀疏光流法跟踪移动物体
c++·笔记·qt·opencv·学习·计算机视觉
我在人间贩卖青春1 天前
重学Qt——对话框和多窗口程序设计
qt
努力努力再努力wz1 天前
【QT入门系列】QWidget 六大常用属性详解:windowOpacity、cursor、font、focus、toolTip 与 styleSheet
android·开发语言·数据结构·c++·qt·mysql·算法
程序leo源2 天前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#