mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: 修复任务栏日期插件显示贴近底部问题
在不同字体以及不同大小下,日期显示位置不美观,特殊处理部分字体 Log: 修复任务栏日期插件显示不美观问题 Bug: https://pms.uniontech.com/zentao/bug-view-79942.html Change-Id: Ie79b0c2ff6ce706868d9b0633ddecc1d83f6394f
This commit is contained in:
parent
6bf6295030
commit
dba894f1d4
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user