From 76a77c7479901af99b1db8228399664ca39c0f94 Mon Sep 17 00:00:00 2001 From: chenjun <104487271+chenjun1982@users.noreply.github.com> Date: Fri, 23 Dec 2022 11:13:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9C=A81.5=E5=80=8D?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E6=97=B6=E9=A3=9E=E8=A1=8C=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E6=98=BE=E7=A4=BA=E8=BF=87=E5=B0=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20(#737)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复在1.5倍缩放时飞行模式图标显示过小问题 Log: 修复在1.5倍缩放时飞行模式图标显示过小问题 Bug: https://pms.uniontech.com/bug-view-177345.html Bug: https://pms.uniontech.com/bug-view-176473.html Influence: 设置缩放后飞行模式图标正常显示 --- plugins/airplane-mode/airplanemodeitem.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/airplane-mode/airplanemodeitem.cpp b/plugins/airplane-mode/airplanemodeitem.cpp index 25784d67e..89317eb5e 100644 --- a/plugins/airplane-mode/airplanemodeitem.cpp +++ b/plugins/airplane-mode/airplanemodeitem.cpp @@ -15,6 +15,7 @@ #include #include #include +#include DGUI_USE_NAMESPACE @@ -112,11 +113,14 @@ void AirplaneModeItem::refreshIcon() else iconString = "airplane-off"; - const auto ratio = devicePixelRatioF(); - int iconSize = PLUGIN_ICON_MAX_SIZE; if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) iconString.append(PLUGIN_MIN_ICON_NAME); - m_iconPixmap = ImageUtil::loadSvg(iconString, ":/", iconSize, ratio); + + const auto ratio = devicePixelRatioF(); + QSize pixmapSize = QCoreApplication::testAttribute(Qt::AA_UseHighDpiPixmaps) ? QSize(20, 20) : (QSize(20, 20) * ratio); + m_iconPixmap = QIcon::fromTheme(iconString, QIcon::fromTheme("://" + iconString + ".svg")).pixmap(pixmapSize); + m_iconPixmap.setDevicePixelRatio(ratio); + update(); } @@ -153,8 +157,10 @@ void AirplaneModeItem::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); + const auto ratio = devicePixelRatioF(); + QPainter painter(this); const QRectF &rf = QRectF(rect()); const QRectF &rfp = QRectF(m_iconPixmap.rect()); - painter.drawPixmap(rf.center() - rfp.center() / m_iconPixmap.devicePixelRatioF(), m_iconPixmap); + painter.drawPixmap(rf.center() - rfp.center() / ratio, m_iconPixmap); }