42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #include "ForeignKeyDelegate.hpp"
 | ||
|  | 
 | ||
|  | #include <QComboBox>
 | ||
|  | 
 | ||
|  | #include "CandidateKeyFilter.hpp"
 | ||
|  | 
 | ||
|  | ForeignKeyDelegate::ForeignKeyDelegate (QAbstractItemModel * referenced_model | ||
|  |                                         , int referenced_key_column | ||
|  |                                         , QObject * parent | ||
|  |                                         , int referenced_key_role) | ||
|  |   : QStyledItemDelegate {parent} | ||
|  |   , candidate_key_filter_ {new CandidateKeyFilter {referenced_model, referenced_key_column, nullptr, referenced_key_role}} | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | ForeignKeyDelegate::ForeignKeyDelegate (QAbstractItemModel * referenced_model | ||
|  |                                         , QAbstractItemModel const * referencing_model | ||
|  |                                         , int referenced_key_column | ||
|  |                                         , int referencing_key_column | ||
|  |                                         , QObject * parent | ||
|  |                                         , int referenced_key_role | ||
|  |                                         , int referencing_key_role) | ||
|  |   : QStyledItemDelegate {parent} | ||
|  |   , candidate_key_filter_ {new CandidateKeyFilter {referenced_model, referencing_model, referenced_key_column, referencing_key_column, nullptr, referenced_key_role, referencing_key_role}} | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | ForeignKeyDelegate::~ForeignKeyDelegate () | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | QWidget * ForeignKeyDelegate::createEditor (QWidget * parent | ||
|  |                                             , QStyleOptionViewItem const& /* option */ | ||
|  |                                             , QModelIndex const& index) const | ||
|  | { | ||
|  |   auto editor = new QComboBox {parent}; | ||
|  |   editor->setFrame (false); | ||
|  |   candidate_key_filter_->set_active_key (index); | ||
|  |   editor->setModel (candidate_key_filter_.data ()); | ||
|  |   return editor; | ||
|  | } |