#ifndef TEMPLATEMANAGER_H #define TEMPLATEMANAGER_H #include #include #include #include #include #include class TemplateItem; class OneTemplateInfo; class FromWebAPI; class OnePlanItemInfo; namespace Ui { class TemplateManager; } /* 限制QLineEdit字数的代理类 */ class LineEditDelegate : public QStyledItemDelegate { public: explicit LineEditDelegate(int maxLength, QObject* parent = nullptr) : QStyledItemDelegate(parent), m_maxLength(maxLength) {} QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override { QLineEdit* editor = new QLineEdit(parent); /* 设置最大输入长度 */ editor->setMaxLength(m_maxLength); return editor; } private: int m_maxLength; }; class TemplateManager : public QDialog { Q_OBJECT public: explicit TemplateManager(QWidget *parent = nullptr); ~TemplateManager(); /* 是否点下了OK */ bool isOk() const { return m_isOk; } /* 获取的已删除的模板列表 */ QList& getDeleteTemplateList() { return m_listDeleteTemplate; } /* 获取已修改的模版列表 */ QMap>& getModifyTemplateList() { return m_mapModifyTemplate; } /* 获取修改名称的列表 */ QMap& getModifyTemplateNameList() { return m_mapModifyTemplateName; } /* 设置模版列表 */ void setTemplateList(const QMultiMap& mapTemplate); /* 设置QSS */ void setQSSPath(const QString& qssPath); /* 设置WebAPI指针 */ void setWebAPI(FromWebAPI* webAPI); signals: private: /* 添加一行 */ void createRow(const OneTemplateInfo& info); /* 修改模版 */ void modifyTemplate(QTableWidgetItem* item); /* 删除模版 */ void deleteTemplate(QTableWidgetItem* item); /* 预览 */ void previewTemplate(QTableWidgetItem* item); private slots: /* 点击了OK */ void do_ok(); /* 点击了一个单元格 */ void do_clickedItem(int row, int column); /* 单元格内容改变了 */ void do_itemChanged(QTableWidgetItem* item); protected: /* 显示事件 */ void showEvent(QShowEvent *event) override; /* 事件过滤器 */ bool eventFilter(QObject *watched, QEvent *event) override; /* 鼠标点击事件 */ void mousePressEvent(QMouseEvent *event) override; /* 鼠标移动事件 */ void mouseMoveEvent(QMouseEvent *event) override; /* 鼠标释放事件 */ void mouseReleaseEvent(QMouseEvent *event) override; private: Ui::TemplateManager *ui; FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */ bool m_isOk = false; /* 是否点下了OK */ // QString m_templateName; /* 模版名称 */ int m_type = -1; /* 模版类型 */ QPoint m_lastPos; /* 鼠标点击的位置 */ const int m_roleChnID = Qt::UserRole + 1; /* 角色名称 */ const int m_roleTemplateName = Qt::UserRole + 2; /* 模板名称,传进来的模板名称 */ const int m_roleTemplateNameNow = Qt::UserRole + 3; /* 模板名称,当前的模板名称 */ QList m_listTemplate; /* 模版列表 */ QList m_listDeleteTemplate; /* 删除的模版列表 */ QMap> m_mapModifyTemplate; /* 修改的模版列表 */ QMap m_mapModifyTemplateName; /* 修改的模版名称,OneTemplateInfo中的是原名,QString中的是新模板名字 */ }; #endif // TEMPLATEMANAGER_H