From b64ba7a0003cfaf075e1c07814792e1c92f19cbc Mon Sep 17 00:00:00 2001 From: zhangkun Date: Thu, 15 Jan 2026 16:10:40 +0800 Subject: [PATCH] fix: set retainWhileLoading to true for DQuickDciIconImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Added explicit call to setRetainWhileLoading(true) for the internal imageItem in DQuickDciIconImagePrivate constructor 2. This ensures that when Qt version is 6.8.0 or higher, the icon image retains its previous visual state while loading new content 3. The change prevents visual flickering or blank states during icon loading transitions Log: Fixed icon flickering issue during loading by enabling retainWhileLoading property Influence: 1. Test icon loading transitions to ensure no flickering occurs 2. Verify that icons maintain their previous appearance while loading new content 3. Test with various DCI icon sources and loading states 4. Confirm compatibility with Qt 6.8.0 and higher versions fix: 为 DQuickDciIconImage 设置 retainWhileLoading 为 true 1. 在 DQuickDciIconImagePrivate 构造函数中为内部 imageItem 显式调用 setRetainWhileLoading(true) 2. 确保当 Qt 版本为 6.8.0 或更高时,图标图像在加载新内容时保留其先前的视 觉状态 3. 此更改防止图标加载过渡期间出现视觉闪烁或空白状态 Log: 通过启用 retainWhileLoading 属性修复图标加载时的闪烁问题 Influence: 1. 测试图标加载过渡,确保不会出现闪烁 2. 验证图标在加载新内容时是否保持其先前的外观 3. 使用各种 DCI 图标源和加载状态进行测试 4. 确认与 Qt 6.8.0 及更高版本的兼容性 PMS: BUG-346973 --- src/private/dquickiconimage.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/private/dquickiconimage.cpp b/src/private/dquickiconimage.cpp index 650999a3..b9d5a3dd 100644 --- a/src/private/dquickiconimage.cpp +++ b/src/private/dquickiconimage.cpp @@ -154,9 +154,9 @@ qreal DQuickIconImagePrivate::calculateDevicePixelRatio() const } DQuickIconImage::DQuickIconImage(QQuickItem *parent) - : QQuickImage(*(new DQuickIconImagePrivate), parent) + : DQuickIconImage(*(new DQuickIconImagePrivate), parent) { - setAsynchronous(true); // asynchronous by default + } DQuickIconImage::~DQuickIconImage() @@ -341,6 +341,10 @@ DQuickIconImage::DQuickIconImage(DQuickIconImagePrivate &dd, QQuickItem *parent) : QQuickImage(dd, parent) { setAsynchronous(true); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + setRetainWhileLoading(true); +#endif } void DQuickIconImage::itemChange(ItemChange change, const ItemChangeData &value)