#ifndef PLANCARD_H #define PLANCARD_H #include #include #include #include "TransmitterSwitchInfo.h" namespace Ui { class PlanCard; } /** * @brief 用户枚举值 * */ enum QtUserRole { UserRole_WeekDay = Qt::UserRole + 1, /* 周几 */ UserRole_Time, /* 时间 */ UserRole_OnOff /* 开关机 */ }; /** * @brief 自定义排序类 * */ class CSortModel : public QSortFilterProxyModel { Q_OBJECT public: explicit CSortModel(QObject *parent = nullptr) : QSortFilterProxyModel(parent) {} ~CSortModel() {} protected: /* 重载比较函数 */ bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; }; class PlanCard : public QWidget { Q_OBJECT public: explicit PlanCard(QWidget *parent = nullptr); ~PlanCard(); /* 设置频率信息 */ void setChannelInfo(const ChannelInfo& info); /* 获取频率信息 */ ChannelInfo& getChannelInfo() { return m_channelInfo; } /* 添加一项,这里的一项是开机和关机单独的一个时间 */ void addPlanItem(const enum_WeekDay weekDay, const QDateTime& time, const enum_OnOff onOff); /* 删除一项 */ void deletePlanItem(const enum_WeekDay weekDay, const QDateTime& time, const enum_OnOff onOff); /* 取出所有的计划信息 */ void getAllPlanInfo(QList& list); /* 设置计划列表 */ void setPlanList(const QList& list); private slots: /* 更改UI外观 */ void do_setUIStyle(); private: /* 设置空白图片和文字的位置 */ void setSpaceImageAndTextRect(); protected: /* 绘制事件 */ void paintEvent(QPaintEvent *event) override; /* 大小缩放事件 */ void resizeEvent(QResizeEvent *event) override; /* 显示事件 */ void showEvent(QShowEvent *event) override; private: Ui::PlanCard *ui; ChannelInfo m_channelInfo; /* 频率信息 */ QStandardItemModel* m_model; /* 表格模型,存储数据 */ CSortModel* m_sortModel; /* 排序模型 */ bool m_isSpace = true; /* 计划是否为空 */ QRect m_rectSpaceImage; /* 空白图片的矩形区域 */ QRect m_rectSpaceText; /* 空白文字的矩形区域 */ QPixmap m_spaceImage; /* 空白图片 */ }; #endif // PLANCARD_H