QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
QgsBrowserModel Class Reference

A model for showing available data sources and other items in a structured tree. More...

#include <qgsbrowsermodel.h>

Inheritance diagram for QgsBrowserModel:

Public Types

enum class  CustomRole : int {
  Path = Qt::UserRole , Comment = Qt::UserRole + 1 , Sort , ProviderKey ,
  LayerMetadata
}
 Custom model roles. More...

Public Slots

void addFavoriteDirectory (const QString &directory, const QString &name=QString())
 Adds a directory to the favorites group.
void beginInsertItems (QgsDataItem *parent, int first, int last)
void beginRemoveItems (QgsDataItem *parent, int first, int last)
void endInsertItems ()
void endRemoveItems ()
void hidePath (QgsDataItem *item)
 Hide the given path in the browser model.
void initialize ()
 Delayed initialization, needed because the provider registry must be already populated.
void itemDataChanged (QgsDataItem *item)
void itemStateChanged (QgsDataItem *item, Qgis::BrowserItemState oldState)
 Emitted when an item's state is changed.
void refreshDrives ()
 Refreshes the list of drive items, removing any corresponding to removed drives and adding newly added drives.
void reload ()
 Reload the whole model.
void removeFavorite (const QModelIndex &index)
 Removes a favorite directory from its corresponding model index.
void removeFavorite (QgsFavoriteItem *favorite)
 Removes a favorite item.
void updateProjectHome ()

Signals

void connectionsChanged (const QString &providerKey)
 Emitted when connections for the specified providerKey have changed in the browser.
void stateChanged (const QModelIndex &index, Qgis::BrowserItemState oldState)
 Emitted when item children fetch was finished.

Public Member Functions

 QgsBrowserModel (QObject *parent=nullptr)
 Constructor for QgsBrowserModel, with the specified parent object.
 ~QgsBrowserModel () override
bool canFetchMore (const QModelIndex &parent) const override
int columnCount (const QModelIndex &parent=QModelIndex()) const override
Q_DECL_DEPRECATED void connectItem (QgsDataItem *item)
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
QgsDataItemdataItem (const QModelIndex &idx) const
 Returns the data item at the specified index, or nullptr if no item exists at the index.
QMap< QString, QgsDirectoryItem * > driveItems () const
 Returns a map of the root drive items shown in the browser.
bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
void fetchMore (const QModelIndex &parent) override
QModelIndex findItem (QgsDataItem *item, QgsDataItem *parent=nullptr) const
 Returns the model index corresponding to the specified data item.
QModelIndex findPath (const QString &path, Qt::MatchFlag matchFlag=Qt::MatchExactly)
 Returns index of item with given path.
QModelIndex findUri (const QString &uri, QModelIndex index=QModelIndex())
 Returns index of layer item with given uri.
Qt::ItemFlags flags (const QModelIndex &index) const override
bool hasChildren (const QModelIndex &parent=QModelIndex()) const override
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const override
bool initialized () const
 Returns true if the model has been initialized.
QMimeData * mimeData (const QModelIndexList &indexes) const override
QStringList mimeTypes () const override
QModelIndex parent (const QModelIndex &index) const override
void refresh (const QModelIndex &index=QModelIndex())
 Refresh item children.
void refresh (const QString &path)
 Refresh item specified by path.
QVector< QgsDataItem * > rootItems () const
 Returns the root items for the model.
int rowCount (const QModelIndex &parent=QModelIndex()) const override
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override

Static Public Member Functions

static QModelIndex findPath (QAbstractItemModel *model, const QString &path, Qt::MatchFlag matchFlag=Qt::MatchExactly)

Protected Member Functions

void addRootItems ()
 Populates the model.
void removeRootItems ()

Protected Attributes

QgsFavoritesItemmFavorites = nullptr
QgsDirectoryItemmProjectHome = nullptr
QVector< QgsDataItem * > mRootItems

Friends

class TestQgsBrowserModel
class TestQgsBrowserProxyModel

Detailed Description

A model for showing available data sources and other items in a structured tree.

QgsBrowserModel is the foundation for the QGIS browser panel, and includes items for the different data providers and folders accessible to users.

QgsBrowserModel models are not initially populated and use a deferred initialization approach. After constructing a QgsBrowserModel, a call must be made to initialize() in order to populate the model.

Note
Since QGIS 3.10 it is recommended to use QgsBrowserGuiModel from GUI library. Implementation of data items used from QgsBrowserModel should not trigger any GUI operations such as opening of widgets/dialogs or showing message boxes. Such actions should be implemented in a new QgsDataItemGuiProvider subclass which is used by QgsBrowserGuiModel (but not by QgsBrowserModel).

Definition at line 52 of file qgsbrowsermodel.h.

Member Enumeration Documentation

◆ CustomRole

enum class QgsBrowserModel::CustomRole : int
strong

Custom model roles.

Note
Prior to QGIS 3.36 this was available as QgsBrowserModel::ItemDataRole
Since
QGIS 3.36
Enumerator
Path 

Item path used to access path in the tree, see QgsDataItem::mPath.

Comment 

Item comment.

Sort 

Custom sort role, see QgsDataItem::sortKey().

ProviderKey 

Data item provider key that created the item, see QgsDataItem::providerKey().

Since
QGIS 3.12
LayerMetadata 

Definition at line 77 of file qgsbrowsermodel.h.

Constructor & Destructor Documentation

◆ QgsBrowserModel()

QgsBrowserModel::QgsBrowserModel ( QObject * parent = nullptr)
explicit

Constructor for QgsBrowserModel, with the specified parent object.

Note
QgsBrowserModel models are not initially populated and use a deferred initialization approach. After constructing a QgsBrowserModel, a call must be made to initialize() in order to populate the model.

Definition at line 75 of file qgsbrowsermodel.cpp.

◆ ~QgsBrowserModel()

QgsBrowserModel::~QgsBrowserModel ( )
override

Definition at line 85 of file qgsbrowsermodel.cpp.

Member Function Documentation

◆ addFavoriteDirectory

void QgsBrowserModel::addFavoriteDirectory ( const QString & directory,
const QString & name = QString() )
slot

Adds a directory to the favorites group.

If name is specified, it will be used as the favorite's name. Otherwise the name will be set to match directory.

See also
removeFavorite()

Definition at line 765 of file qgsbrowsermodel.cpp.

◆ addRootItems()

void QgsBrowserModel::addRootItems ( )
protected

Populates the model.

Definition at line 117 of file qgsbrowsermodel.cpp.

◆ beginInsertItems

void QgsBrowserModel::beginInsertItems ( QgsDataItem * parent,
int first,
int last )
slot

Definition at line 594 of file qgsbrowsermodel.cpp.

◆ beginRemoveItems

void QgsBrowserModel::beginRemoveItems ( QgsDataItem * parent,
int first,
int last )
slot

Definition at line 609 of file qgsbrowsermodel.cpp.

◆ canFetchMore()

bool QgsBrowserModel::canFetchMore ( const QModelIndex & parent) const
override

Definition at line 726 of file qgsbrowsermodel.cpp.

◆ columnCount()

int QgsBrowserModel::columnCount ( const QModelIndex & parent = QModelIndex()) const
override

Definition at line 418 of file qgsbrowsermodel.cpp.

◆ connectionsChanged

void QgsBrowserModel::connectionsChanged ( const QString & providerKey)
signal

Emitted when connections for the specified providerKey have changed in the browser.

Forwarded to the widget and used to notify the provider dialogs of a changed connection.

◆ connectItem()

void QgsBrowserModel::connectItem ( QgsDataItem * item)
Deprecated
QGIS 3.4. This method has no effect, and is dangerous to call in earlier QGIS versions. Any usage should be removed (and will have no harmful side-effects!).

Definition at line 493 of file qgsbrowsermodel.cpp.

◆ data()

QVariant QgsBrowserModel::data ( const QModelIndex & index,
int role = Qt::DisplayRole ) const
override

Definition at line 293 of file qgsbrowsermodel.cpp.

◆ dataItem()

QgsDataItem * QgsBrowserModel::dataItem ( const QModelIndex & idx) const

Returns the data item at the specified index, or nullptr if no item exists at the index.

Definition at line 718 of file qgsbrowsermodel.cpp.

◆ driveItems()

QMap< QString, QgsDirectoryItem * > QgsBrowserModel::driveItems ( ) const

Returns a map of the root drive items shown in the browser.

These correspond to the top-level directory items shown, e.g. on Windows the C:\, D:\, etc, and on Linux the "/" root directory.

Since
QGIS 3.6

Definition at line 247 of file qgsbrowsermodel.cpp.

◆ dropMimeData()

bool QgsBrowserModel::dropMimeData ( const QMimeData * data,
Qt::DropAction action,
int row,
int column,
const QModelIndex & parent )
override

Definition at line 704 of file qgsbrowsermodel.cpp.

◆ endInsertItems

void QgsBrowserModel::endInsertItems ( )
slot

Definition at line 604 of file qgsbrowsermodel.cpp.

◆ endRemoveItems

void QgsBrowserModel::endRemoveItems ( )
slot

Definition at line 617 of file qgsbrowsermodel.cpp.

◆ fetchMore()

void QgsBrowserModel::fetchMore ( const QModelIndex & parent)
override

Definition at line 734 of file qgsbrowsermodel.cpp.

◆ findItem()

QModelIndex QgsBrowserModel::findItem ( QgsDataItem * item,
QgsDataItem * parent = nullptr ) const

Returns the model index corresponding to the specified data item.

If the item was not found, an invalid QModelIndex is returned.

If the parent item is argument is specified, then only items which are children of parent are searched. If no parent is specified, then all items within the model are searched.

Definition at line 578 of file qgsbrowsermodel.cpp.

◆ findPath() [1/2]

QModelIndex QgsBrowserModel::findPath ( const QString & path,
Qt::MatchFlag matchFlag = Qt::MatchExactly )

Returns index of item with given path.

It only searches in currently fetched items, i.e. it does not fetch children.

Parameters
pathitem path
matchFlagsupported is Qt::MatchExactly and Qt::MatchStartsWith which has reverse meaning, i.e. find item with the longest match from start with path (to get as close/deep as possible to deleted item).
Returns
model index, invalid if item not found

Definition at line 424 of file qgsbrowsermodel.cpp.

◆ findPath() [2/2]

QModelIndex QgsBrowserModel::findPath ( QAbstractItemModel * model,
const QString & path,
Qt::MatchFlag matchFlag = Qt::MatchExactly )
static
Note
not available in Python bindings

Definition at line 429 of file qgsbrowsermodel.cpp.

◆ findUri()

QModelIndex QgsBrowserModel::findUri ( const QString & uri,
QModelIndex index = QModelIndex() )

Returns index of layer item with given uri.

It only searches in currently fetched items, i.e. it does not fetch children.

Parameters
uriitem uri
indexthe current index of the parent (to search for children)
Returns
model index, invalid if item not found
Since
QGIS 3.6

Definition at line 469 of file qgsbrowsermodel.cpp.

◆ flags()

Qt::ItemFlags QgsBrowserModel::flags ( const QModelIndex & index) const
override

Definition at line 263 of file qgsbrowsermodel.cpp.

◆ hasChildren()

bool QgsBrowserModel::hasChildren ( const QModelIndex & parent = QModelIndex()) const
override

Definition at line 409 of file qgsbrowsermodel.cpp.

◆ headerData()

QVariant QgsBrowserModel::headerData ( int section,
Qt::Orientation orientation,
int role = Qt::DisplayRole ) const
override

Definition at line 380 of file qgsbrowsermodel.cpp.

◆ hidePath

void QgsBrowserModel::hidePath ( QgsDataItem * item)
slot

Hide the given path in the browser model.

Definition at line 788 of file qgsbrowsermodel.cpp.

◆ index()

QModelIndex QgsBrowserModel::index ( int row,
int column,
const QModelIndex & parent = QModelIndex() ) const
override

Definition at line 558 of file qgsbrowsermodel.cpp.

◆ initialize

void QgsBrowserModel::initialize ( )
slot

Delayed initialization, needed because the provider registry must be already populated.

See also
initialized()

Definition at line 253 of file qgsbrowsermodel.cpp.

◆ initialized()

bool QgsBrowserModel::initialized ( ) const
inline

Returns true if the model has been initialized.

See also
initialize()

Definition at line 161 of file qgsbrowsermodel.h.

◆ itemDataChanged

void QgsBrowserModel::itemDataChanged ( QgsDataItem * item)
slot

Definition at line 622 of file qgsbrowsermodel.cpp.

◆ itemStateChanged

void QgsBrowserModel::itemStateChanged ( QgsDataItem * item,
Qgis::BrowserItemState oldState )
slot

Emitted when an item's state is changed.

Definition at line 630 of file qgsbrowsermodel.cpp.

◆ mimeData()

QMimeData * QgsBrowserModel::mimeData ( const QModelIndexList & indexes) const
override

Definition at line 671 of file qgsbrowsermodel.cpp.

◆ mimeTypes()

QStringList QgsBrowserModel::mimeTypes ( ) const
override

Definition at line 662 of file qgsbrowsermodel.cpp.

◆ parent()

QModelIndex QgsBrowserModel::parent ( const QModelIndex & index) const
override

Definition at line 569 of file qgsbrowsermodel.cpp.

◆ refresh() [1/2]

void QgsBrowserModel::refresh ( const QModelIndex & index = QModelIndex())

Refresh item children.

Definition at line 754 of file qgsbrowsermodel.cpp.

◆ refresh() [2/2]

void QgsBrowserModel::refresh ( const QString & path)

Refresh item specified by path.

Definition at line 747 of file qgsbrowsermodel.cpp.

◆ refreshDrives

void QgsBrowserModel::refreshDrives ( )
slot

Refreshes the list of drive items, removing any corresponding to removed drives and adding newly added drives.

Since
QGIS 3.4

Definition at line 507 of file qgsbrowsermodel.cpp.

◆ reload

void QgsBrowserModel::reload ( )
slot

Reload the whole model.

Definition at line 498 of file qgsbrowsermodel.cpp.

◆ removeFavorite [1/2]

void QgsBrowserModel::removeFavorite ( const QModelIndex & index)
slot

Removes a favorite directory from its corresponding model index.

See also
addFavoriteDirectory()

Definition at line 771 of file qgsbrowsermodel.cpp.

◆ removeFavorite [2/2]

void QgsBrowserModel::removeFavorite ( QgsFavoriteItem * favorite)
slot

Removes a favorite item.

See also
addFavoriteDirectory()
Note
Not available in Python bindings
Since
QGIS 3.6

Definition at line 780 of file qgsbrowsermodel.cpp.

◆ removeRootItems()

void QgsBrowserModel::removeRootItems ( )
protected

Definition at line 194 of file qgsbrowsermodel.cpp.

◆ rootItems()

QVector< QgsDataItem * > QgsBrowserModel::rootItems ( ) const
inline

Returns the root items for the model.

Since
QGIS 3.28

Definition at line 178 of file qgsbrowsermodel.h.

◆ rowCount()

int QgsBrowserModel::rowCount ( const QModelIndex & parent = QModelIndex()) const
override

Definition at line 391 of file qgsbrowsermodel.cpp.

◆ setData()

bool QgsBrowserModel::setData ( const QModelIndex & index,
const QVariant & value,
int role = Qt::EditRole )
override

Definition at line 352 of file qgsbrowsermodel.cpp.

◆ stateChanged

void QgsBrowserModel::stateChanged ( const QModelIndex & index,
Qgis::BrowserItemState oldState )
signal

Emitted when item children fetch was finished.

◆ updateProjectHome

void QgsBrowserModel::updateProjectHome ( )
slot

Definition at line 90 of file qgsbrowsermodel.cpp.

◆ TestQgsBrowserModel

friend class TestQgsBrowserModel
friend

Definition at line 274 of file qgsbrowsermodel.h.

◆ TestQgsBrowserProxyModel

friend class TestQgsBrowserProxyModel
friend

Definition at line 275 of file qgsbrowsermodel.h.

Member Data Documentation

◆ mFavorites

QgsFavoritesItem* QgsBrowserModel::mFavorites = nullptr
protected

Definition at line 256 of file qgsbrowsermodel.h.

◆ mProjectHome

QgsDirectoryItem* QgsBrowserModel::mProjectHome = nullptr
protected

Definition at line 257 of file qgsbrowsermodel.h.

◆ mRootItems

QVector<QgsDataItem *> QgsBrowserModel::mRootItems
protected

Definition at line 255 of file qgsbrowsermodel.h.


The documentation for this class was generated from the following files: