DiagramDesigner/diagramCavas/include/structDataPropertyDelegate.h

50 lines
1.7 KiB
C++

#ifndef STRUCTDATAPROPERTYDELEGATE_H
#define STRUCTDATAPROPERTYDELEGATE_H
/**
* 结构预览ui的参量类型代理
* */
#include <QStyledItemDelegate>
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