16 #include <QItemDelegate> 20 #include <QToolButton> 36 QgsVectorLayer *QgsAttributeTableDelegate::layer(
const QAbstractItemModel *model )
77 QWidget *w = eww->
widget();
79 w->setAutoFillBackground(
true );
80 w->setFocusPolicy( Qt::StrongFocus );
108 QVariant oldValue = model->data( index, Qt::EditRole );
115 QList<int> indexes = QList<int>() << fieldIdx;
116 QVariantList newValues = QVariantList() << eww->
value();
118 for (
const QString &fieldName : additionalFields )
124 if ( ( oldValue != newValues.at( 0 ) && newValues.at( 0 ).isValid() )
125 || oldValue.isNull() != newValues.at( 0 ).isNull()
126 || newValues.count() > 1 )
136 for (
int i = 0; i < newValues.count(); i++ )
149 QVariant value = index.model()->data( index, Qt::EditRole );
152 if ( !additionalFields.empty() )
158 QVariantList additionalFieldValues;
159 for ( QString fieldName : additionalFields )
161 additionalFieldValues << feat.
attribute( fieldName );
163 eww->
setValues( value, additionalFieldValues );
174 mFeatureSelectionModel = featureSelectionModel;
189 QStyleOptionViewItem myOpt = option;
191 if ( index.model()->data( index, Qt::EditRole ).isNull() )
193 myOpt.font.setItalic(
true );
194 myOpt.palette.setColor( QPalette::Text, QColor(
"gray" ) );
197 if ( mFeatureSelectionModel && mFeatureSelectionModel->
isSelected( fid ) )
198 myOpt.state |= QStyle::State_Selected;
200 QItemDelegate::paint( painter, myOpt, index );
202 if ( option.state & QStyle::State_HasFocus )
204 QRect r = option.rect.adjusted( 1, 1, -1, -1 );
205 QPen p( QBrush( QColor( 0, 255, 127 ) ), 2 );
207 painter->setPen( p );
208 painter->drawRect( r );
int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
bool isValid() const
Returns the validity of this feature.
QgsVectorLayer * layer() const
Returns the layer this filter acts on.
QgsVectorLayer * layer() const
Returns the layer this model uses as backend.
virtual bool isSelected(QgsFeatureId fid)
Returns the selection status of a given feature id.
Field comes from a joined layer (originIndex / 1000 = index of the join, originIndex % 1000 = index w...
FieldOrigin fieldOrigin(int fieldIdx) const
Gets field's origin (value from an enumeration)
QgsAttributeTableModel * masterModel() const
Returns the table model this filter is using.
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Overloads the paint method form the QItemDelegate base class.
Get the field index of this column.
void beginEditCommand(const QString &text)
Create edit command for undo/redo operations.
This class contains context information for attribute editor widgets.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
A model backed by a QgsVectorLayerCache which is able to provide feature/attribute information to a Q...
void actionColumnItemPainted(const QModelIndex &index) const
Emitted when an action column item is painted.
void setFormFeature(const QgsFeature &feature)
Set current feature for the currently edited form or table row.
void setFeatureSelectionModel(QgsFeatureSelectionModel *featureSelectionModel)
Get the feature id of the feature in this row.
QgsFeature feature(const QModelIndex &idx) const
Returns the feature attributes at given model index.
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
Used to create an editor for when the user tries to change the contents of a cell.
A widget was opened as a popup (e.g. attribute table editor widget)
void setEditorData(QWidget *editor, const QModelIndex &index) const override
Sets data from model into the editor.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
QgsVectorLayer * joinLayer() const
Returns joined layer (may be nullptr if the reference was set by layer ID and not resolved yet) ...
static QgsEditorWidgetRegistry * editorWidgetRegistry()
Returns the global editor widget registry, used for managing all known edit widget factories...
Defines left outer join from our vector layer to some other vector layer.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
QgsEditFormConfig editFormConfig
This column shows action buttons.
void endEditCommand()
Finish edit command and add it to undo/redo stack.
QgsVectorLayerJoinBuffer * joinBuffer()
Returns the join buffer object.
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
Sets data from editor back to model.
const QgsVectorLayerJoinInfo * joinForFieldIndex(int index, const QgsFields &fields, int &sourceFieldIndex) const
Finds the vector join for a layer field index.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
ColumnType
The type of a column.
bool changeAttributeValue(QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue=QVariant(), bool skipDefaultValues=false)
Changes an attribute value for a feature (but does not immediately commit the changes).
bool isEditable() const
Returns whether joined fields may be edited through the form of the target layer. ...
bool nextFeature(QgsFeature &f)
Geometry is not required. It may still be returned if e.g. required for a filter condition.
The type of a given column.
Represents a vector layer which manages a vector based data sets.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
QgsFeatureRequest & setFlags(QgsFeatureRequest::Flags flags)
Sets flags that affect how features will be fetched.