《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就没有错位问题。

相关推荐
把我格子衫拿来9 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
把我格子衫拿来15 小时前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
代钦塔拉17 小时前
【C++/Qt 进阶】设计模式系列(4):原型模式——用“克隆“代替“重新构造“
c++·qt·设计模式
Python图像识别18 小时前
56-【2027毕设】YOLO11X光安检危险物品检测系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
把我格子衫拿来20 小时前
鼠标点到哪里才算选中?Qt 与 VTK 的拾取坐标、DPI 与体素定位
python·qt·vtk·坐标变换·三维交互
Lhan.zzZ1 天前
Qt WebEngineView 在 Linux 上无法加载网页:从“看不见 HTML“到“禁用沙箱“
linux·c++·qt
Quz2 天前
QML TabBar 标签栏交互效果合集
qt·动画·qml
zhanghaha13142 天前
Qt 工程实例:逐词逐句保姆级讲解
qt
架构师伯子明3 天前
QT+OpenGL(3):FBO离屏渲染
开发语言·qt
mengzhi啊3 天前
把数据存入sql数据库。qt,c++。
数据库·sql·qt