#ifndef FOREIGN_KEY_DELEGATE_HPP_ #define FOREIGN_KEY_DELEGATE_HPP_ #include #include class CandidateKeyFilter; // // Class ForeignKeyDelegate // // Item delegate for editing a foreign key item in a one or many // to one relationship. A QComboBox is used as an item delegate // for the edit role. // class ForeignKeyDelegate final : public QStyledItemDelegate { public: // many to many relationship explicit ForeignKeyDelegate(QAbstractItemModel *referenced_model, int referenced_key_column, QObject *parent = nullptr, int referenced_key_role = Qt::EditRole); // one to many (referenced to referencing) relationship explicit ForeignKeyDelegate(QAbstractItemModel *referenced_model, QAbstractItemModel const *referencing_model, int referenced_key_column, int referencing_key_column, QObject *parent = nullptr, int referenced_key_role = Qt::EditRole, int referencing_key_role = Qt::EditRole); ~ForeignKeyDelegate(); QWidget *createEditor(QWidget *parent, QStyleOptionViewItem const &, QModelIndex const &) const override; private: QScopedPointer candidate_key_filter_; }; #endif