#ifndef PICSCHEDULESHIFTITEM_H #define PICSCHEDULESHIFTITEM_H #include "pictextitem.h" #include #include #include #include struct ScheduleModel { QTime startTime; QString name; }; static bool operator < (const ScheduleModel& l, const ScheduleModel& r) { return l.startTime < r.startTime; } Q_DECLARE_METATYPE(ScheduleModel); class PicScheduleShiftItem : public PicTextItem { public: PicScheduleShiftItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::SCHEDULE_SHIFT); const QVector& schedules() const; void setSchedules(QVector schedules); bool updateScheduleName(); virtual QRectF boundingRect() const override; protected: virtual void setCustomAttrs(const QXmlStreamAttributes& attrs) override; virtual void saveCustomAttrs(QXmlStreamAttributes& attrs) override; virtual QImage itemImage(); virtual void letterSpaceChanged() override; private: QString findScheduleName(const QTime& time); QVector m_schedules; QTimer m_updateTimer; QString m_currScheduleName; QSize m_maxSize; // 缓存最长名称的像素宽高 QSize calcMaxSize(); }; #endif // PICSCHEDULESHIFTITEM_H