1 #ifndef FOREIGNKEYDELEGATE_H 2 #define FOREIGNKEYDELEGATE_H 3 4 #include <QStyledItemDelegate> 5 #include <unordered_map> 6 #include <vector> 7 #include <string> 8 9 class DBBrowserDB; 10 11 namespace sqlb 12 { 13 class Table; 14 } 15 16 class ForeignKeyEditorDelegate : public QStyledItemDelegate 17 { 18 Q_OBJECT 19 20 public: 21 explicit ForeignKeyEditorDelegate(const DBBrowserDB& db, sqlb::Table& table, QObject* parent = nullptr); 22 23 QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override; 24 void setEditorData(QWidget* editor, const QModelIndex& index) const override; 25 void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override; 26 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; 27 28 private: 29 const DBBrowserDB& m_db; 30 sqlb::Table& m_table; 31 mutable std::unordered_map<std::string, std::vector<std::string>> m_tablesIds; 32 }; 33 34 #endif // FOREIGNKEYDELEGATE_H 35