From dba894f1d4b7e2fa8650c91d4a8d8326a237cd19 Mon Sep 17 00:00:00 2001 From: yanghongwei Date: Wed, 19 May 2021 16:05:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E6=97=A5=E6=9C=9F=E6=8F=92=E4=BB=B6=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E8=B4=B4=E8=BF=91=E5=BA=95=E9=83=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在不同字体以及不同大小下,日期显示位置不美观,特殊处理部分字体 Log: 修复任务栏日期插件显示不美观问题 Bug: https://pms.uniontech.com/zentao/bug-view-79942.html Change-Id: Ie79b0c2ff6ce706868d9b0633ddecc1d83f6394f --- plugins/datetime/datetimewidget.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index 856300cab..b014959b3 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -198,15 +198,35 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) QString dateStr = current.toString(format); if (position == Dock::Top || position == Dock::Bottom) { - timeRect.setBottom(rect().top() + QFontMetrics(m_timeFont).boundingRect(timeStr).height()); - dateRect.setTop(timeRect.bottom() - 5);//此处的5只是试验效果所写的值 + // 只处理上下位置的,特殊处理一下藏文,其他的语言如果有问题也可以类似特殊处理一下 + // Unifont字体有点特殊 + // 以下的0.23 0.18 0.2 0.13数值是测试过程中微调时间跟日期之间的间距系数,不是特别计算的精确值 + QLocale locale; + int timeHeight = QFontMetrics(m_timeFont).boundingRect(timeStr).height() + 2; // +2只是防止显示在边界的几个像素被截断 + int dateHeight = QFontMetrics(m_dateFont).boundingRect(dateStr).height() + 2; + int marginH = (height() - timeHeight - dateHeight) / 2; + + if (locale.language() == QLocale::Tibetan) { + if (m_timeFont.family() == "Noto Serif Tibetan") + marginH = marginH + 0.23 * timeHeight; + else if (m_timeFont.family() == "Noto Sans Tibetan") + marginH = marginH + 0.18 * timeHeight; + else if (m_timeFont.family() == "Tibetan Machine Uni") + marginH = marginH + 0.2 * timeHeight; + } else { + if (m_timeFont.family() != "Unifont") + marginH = marginH + 0.13 * timeHeight; + } + + timeRect = QRect(0, marginH, width(), timeHeight); + dateRect = QRect(0, height() - dateHeight - marginH, width(), dateHeight); } else { timeRect.setBottom(rect().center().y() + m_timeOffset); dateRect.setTop(timeRect.bottom()); } painter.setFont(m_timeFont); - painter.drawText(timeRect, Qt::AlignBottom | Qt::AlignHCenter, timeStr); + painter.drawText(timeRect, Qt::AlignCenter, timeStr); painter.setFont(m_dateFont); - painter.drawText(dateRect, Qt::AlignTop | Qt::AlignHCenter, dateStr); + painter.drawText(dateRect, Qt::AlignCenter, dateStr); }