#ifndef STRUCTDATAPROPERTYDELEGATE_H #define STRUCTDATAPROPERTYDELEGATE_H /** * 结构预览ui的参量类型代理 * */ #include class StructDataSource; struct MeasurementInfo; struct ExtraProperty; class QCompleter; class StructDataPropertyDelegate : public QStyledItemDelegate { Q_OBJECT public: StructDataPropertyDelegate(QObject* parent = nullptr); QWidget* createEditor(QWidget* parent,const QStyleOptionViewItem& option,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; QString displayText(const QVariant& value, const QLocale& locale) const override; void setConnectParaCompleter(QCompleter* p) {_connectCompleter = p;} //设置连接参数输入的completer private: QWidget* createConnectParaEditor(QWidget* parent) const; QWidget* createDefaultValueEditor(QWidget* parent, const QModelIndex& index) const; QWidget* createLengthPrecisionEditor(QWidget* parent) const; void setDefaultValueEditorData(QWidget* editor, const QVariant& value, const QModelIndex& index) const; QVariant getDefaultValueEditorData(QWidget* editor, const QModelIndex& index) const; public slots: void onConnectParamChanged(const QString& str) const; protected: bool eventFilter(QObject *obj, QEvent *event) override; private: QCompleter* _connectCompleter = nullptr; //自动补全的completer }; #endif