#ifndef ATTRIBUTETABLEDELEGATE_H #define ATTRIBUTETABLEDELEGATE_H #include "messageDialog.h" #include #include QT_BEGIN_NAMESPACE namespace Ui { class TextEditWidget; } QT_END_NAMESPACE class TextEditWidget : public QWidget { Q_OBJECT public: explicit TextEditWidget(QWidget* parent = nullptr); ~TextEditWidget(); QString editText(); void setEditText(const QString&); void setPrompt(const QString&); void setRegularExpression(const QString&); void setErrorInfo(const QString&); void setFocusToTextEdit(); signals: void confirm(); void cancle(); void closeWidget(); protected: bool eventFilter(QObject*, QEvent*) override; //void mousePressEvent(QMouseEvent*) override; private slots: void onTextChanged(); void onBtnClicked_confirm(); void onBtnClicked_cancle(); private: Ui::TextEditWidget* ui; QString m_promptString; //提示字符 QString m_patternString; //正则表达式的模式字符 QRegularExpression m_regExp; }; class AttributeTableDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit AttributeTableDelegate(QTableView* view, const QString& connection = "", QObject* parent = nullptr); ~AttributeTableDelegate(); //bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override; QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,const QModelIndex &index) const override; //void destroyEditor(QWidget* editor, const QModelIndex& index) const override; void setEditorData(QWidget *editor, const QModelIndex &index) const override; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; signals: void showMessage(MessageDialogType,const QString&,const QString&); private: bool isEnumType(const QModelIndex&) const; QString m_connection; QTableView* m_tableView; }; #endif //ATTRIBUTETABLEDELEGATE_H