18 #include <QHeaderView> 35 , mMasterModel( nullptr )
36 , mFilterModel( nullptr )
37 , mFeatureSelectionModel( nullptr )
38 , mFeatureSelectionManager( nullptr )
40 , mActionPopup( nullptr )
41 , mLayerCache( nullptr )
42 , mRowSectionAnchor( 0 )
63 connect(
horizontalHeader(), SIGNAL( sortIndicatorChanged(
int, Qt::SortOrder ) ),
this, SLOT( showHorizontalSortIndicator() ) );
75 switch ( event->
type() )
77 case QEvent::MouseButtonPress:
81 case QEvent::MouseButtonRelease:
97 disconnect( mFilterModel, SIGNAL( filterAboutToBeInvalidated() ),
this, SLOT( onFilterAboutToBeInvalidated() ) );
98 disconnect( mFilterModel, SIGNAL( filterInvalidated() ),
this, SLOT( onFilterInvalidated() ) );
101 mFilterModel = filterModel;
104 connect( mFilterModel, SIGNAL(
destroyed() ),
this, SLOT( modelDeleted() ) );
106 delete mFeatureSelectionModel;
107 mFeatureSelectionModel =
nullptr;
111 if ( !mFeatureSelectionManager )
116 mFeatureSelectionModel =
new QgsFeatureSelectionModel( mFilterModel, mFilterModel, mFeatureSelectionManager, mFilterModel );
119 connect( mFeatureSelectionModel, SIGNAL( requestRepaint( QModelIndexList ) ),
this, SLOT(
repaintRequested( QModelIndexList ) ) );
126 if ( mFeatureSelectionManager )
127 delete mFeatureSelectionManager;
129 mFeatureSelectionManager = featureSelectionManager;
131 if ( mFeatureSelectionModel )
165 switch ( event->
key() )
202 mFeatureSelectionModel->
selectFeatures( selection, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows );
208 mActionPopup =
nullptr;
220 mActionPopup =
new QMenu();
222 mActionPopup->
addAction(
tr(
"Select All" ),
this, SLOT(
selectAll() ), QKeySequence::SelectAll );
227 if ( !mActionPopup->
actions().isEmpty() )
243 void QgsAttributeTableView::modelDeleted()
245 mFilterModel =
nullptr;
246 mFeatureSelectionManager =
nullptr;
247 mFeatureSelectionModel =
nullptr;
257 if ( row >= 0 && row <
model()->rowCount() )
263 if (( anchor && !( command & QItemSelectionModel::Current ) )
265 mRowSectionAnchor = row;
268 && command.testFlag( QItemSelectionModel::Toggle ) )
271 mCtrlDragSelectionFlag = mFeatureSelectionModel->
isSelected( index )
272 ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
274 command |= mCtrlDragSelectionFlag;
276 command |= QItemSelectionModel::Current;
288 void QgsAttributeTableView::showHorizontalSortIndicator()
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
void setDirtyRegion(const QRegion ®ion)
QByteArray toByteArray() const
virtual bool isSelected(QgsFeatureId fid)
Returns the selection status of a given feature id.
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const =0
void willShowContextMenu(QMenu *menu, const QModelIndex &atIndex)
Is emitted, in order to provide a hook to add aditional menu entries to the context menu...
virtual void setSelection(const QRect &rect, QFlags< QItemSelectionModel::SelectionFlag > flags)
void setSelectionMode(QAbstractItemView::SelectionMode mode)
QgsAttributeTableView(QWidget *parent=nullptr)
QItemSelectionModel * selectionModel() const
void setSortingEnabled(bool enable)
virtual bool eventFilter(QObject *object, QEvent *event) override
This event filter is installed on the verticalHeader to intercept mouse press and release events...
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
virtual void selectAll() override
QString tr(const char *sourceText, const char *disambiguation, int n)
void enableSync(bool enable)
Enables or disables synchronisation to the QgsVectorLayer When synchronisation is disabled...
virtual void mouseReleaseEvent(QMouseEvent *event)
virtual int rowCount(const QModelIndex &parent) const
void setFeatureSelectionModel(QgsFeatureSelectionModel *featureSelectionModel)
void mouseReleaseEvent(QMouseEvent *event) override
Called for mouse release events on a table cell.
QgsVectorLayer * layer() const
Returns the layer this filter acts on.
void setValue(const QString &key, const QVariant &value)
virtual QModelIndex indexAt(const QPoint &pos) const
void append(const T &value)
virtual void setModel(QAbstractItemModel *model)
virtual void setSelectionModel(QItemSelectionModel *selectionModel)
void installEventFilter(QObject *filterObj)
void setItemDelegate(QAbstractItemDelegate *delegate)
void mousePressEvent(QMouseEvent *event) override
Called for mouse press events on a table cell.
virtual void setFeatureSelectionManager(QgsIFeatureSelectionManager *featureSelectionManager)
virtual void setModel(QgsAttributeTableFilterModel *filterModel)
void mouseMoveEvent(QMouseEvent *event) override
Called for mouse move events on a table cell.
virtual QRect visualRect(const QModelIndex &index) const =0
virtual void mouseMoveEvent(QMouseEvent *event)
virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event) const
QVariant value(const QString &key, const QVariant &defaultValue) const
virtual bool event(QEvent *event)
virtual void selectFeatures(const QItemSelection &selection, const SelectionFlags &command)
Select features on this table.
virtual void mousePressEvent(QMouseEvent *event)
void setFeatureSelectionManager(QgsIFeatureSelectionManager *featureSelectionManager)
setFeatureSelectionManager
A delegate item class for QgsAttributeTable (see Qt documentation for QItemDelegate).
virtual void selectRow(int row)
void setCurrentIndex(const QModelIndex &index, QFlags< QItemSelectionModel::SelectionFlag > command)
virtual void keyPressEvent(QKeyEvent *event)
virtual void _q_selectRow(int row)
virtual ~QgsAttributeTableView()
QAbstractItemModel * model() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Is an interface class to abstract feature selection handling.
void closeEvent(QCloseEvent *event) override
Saves geometry to the settings on close.
Represents a vector layer which manages a vector based data sets.
void destroyed(QObject *obj)
void keyPressEvent(QKeyEvent *event) override
Called for key press events Disables selection change by only pressing an arrow key.
void contextMenuEvent(QContextMenuEvent *event) override
Is called when the context menu will be shown.