修改文件换行符,修正轮班图元长度计算问题

This commit is contained in:
2026-08-19 11:55:10 +08:00
parent 176b53b654
commit a274b75705
116 changed files with 68711 additions and 68660 deletions
+9
View File
@@ -97,6 +97,15 @@ void PicDateItem::setSource(QVariant var)
if(m_model.datetimePattern.isEmpty())
return;
// 重新计算最长显示尺寸(以防 font()/letterSpace 改变时未重算)
m_maxDateTimeStr = generateMaxDateTimeString(m_model, font());
if (m_maxDateTimeStr.isEmpty()) {
m_maxSize = QSize();
} else {
QFontMetrics fm(font());
m_maxSize = QSize(fm.horizontalAdvance(m_maxDateTimeStr), fm.height());
}
m_currDateTimeStr = ItemUtils::generateTxtFromDateItemModel(m_model, QDateTime::currentDateTime());
applyModify();
}
+37 -1
View File
@@ -1,6 +1,8 @@
#include "PicScheduleShiftItem.h"
#include <algorithm>
#include "LogInfo.h"
#include <QFontMetrics>
#include <QPainter>
PicScheduleShiftItem::PicScheduleShiftItem(QGraphicsItem *parent, QGraphicsScene *scene, const SourceType type)
:PicTextItem(parent, scene, type)
@@ -19,6 +21,9 @@ QVariant PicScheduleShiftItem::source()
void PicScheduleShiftItem::setSource(QVariant var)
{
// 重新计算基于当前字体的最大名称像素宽度
m_maxSize = calcMaxSize();
m_currScheduleName = findScheduleName(QTime::currentTime());
applyModify();
}
@@ -31,6 +36,8 @@ const QVector<ScheduleModel>& PicScheduleShiftItem::schedules() const
void PicScheduleShiftItem::setSchedules(QVector<ScheduleModel> schedules)
{
m_schedules = std::move(schedules);
m_maxSize = calcMaxSize();
m_currScheduleName = findScheduleName(QTime::currentTime());
applyModify();
}
@@ -95,11 +102,40 @@ QImage PicScheduleShiftItem::itemImage()
auto str = m_currScheduleName;
if(str.isEmpty()) {
QImage();
return QImage();
}
return strToImage(str);
}
QSize PicScheduleShiftItem::calcMaxSize()
{
if (m_schedules.isEmpty())
return QSize();
QFontMetrics fm(font());
int bestW = 0;
for (const auto &mdl : m_schedules) {
int w = fm.horizontalAdvance(mdl.name);
if (w > bestW) bestW = w;
}
return QSize(bestW, fm.height());
}
QRectF PicScheduleShiftItem::boundingRect() const
{
if (!m_itemImage.isNull()) {
return QRectF(0, 0, m_itemImage.width(), m_itemImage.height());
}
int w = m_maxSize.width();
int h = m_maxSize.height();
if (w <= 0 || h <= 0)
return QGraphicsTextItem::boundingRect();
qreal bw = qreal(w) * qMax(1, m_boldMultiple);
return QRectF(0, 0, bw, qreal(h));
}
QString PicScheduleShiftItem::findScheduleName(const QTime &time)
{
if(m_schedules.isEmpty())
+6
View File
@@ -5,6 +5,7 @@
#include <QTime>
#include <QString>
#include <QTimer>
#include <QSize>
struct ScheduleModel
{
@@ -45,6 +46,11 @@ private:
QVector<ScheduleModel> m_schedules;
QTimer m_updateTimer;
QString m_currScheduleName;
QSize m_maxSize; // 缓存最长名称的像素宽高
virtual QRectF boundingRect() const override;
QSize calcMaxSize();
};
#endif // PICSCHEDULESHIFTITEM_H