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

相关推荐
Source.Liu1 小时前
【LibreCAD】RS2 模块完整解析
qt·cad
Source.Liu2 小时前
【学写LibreCAD】单位转换系统 Rust 实现
qt·rust·cad
一只小bit2 小时前
Qt 信号与槽:信号产生与处理之间的重要函数
前端·c++·qt·cpp·页面
偶像你挑的噻2 小时前
1.Qt-编译器基本知识介绍
开发语言·qt
透明的玻璃杯2 小时前
VS2015 +QT5.9.9 环境问题注意事项
开发语言·qt
千千道2 小时前
QT上位机作为FTP客户端上传多文件
c++·qt
luoyayun3612 小时前
Qt/QML 实现类似Xmind简易思维导图绘制
qt·xmind·思维导图
九天轩辕2 小时前
基于 Qt 和 libimobiledevice 的跨平台 iOS 设备管理工具开发实践
开发语言·qt·ios
小尧嵌入式2 小时前
QT软件开发知识点流程及文本转语音工具
开发语言·c++·qt