Pages
API Documentation
On this page

KLinkItemSelectionModel Class

Makes it possible to share a selection in multiple views which do not have the same source model. More...

  • Header: #include <KLinkItemSelectionModel>
  • CMake: find_package(KF6 REQUIRED COMPONENTS ItemModels)
    target_link_libraries(mytarget PRIVATE KF6::ItemModels)
  • Inherits: QItemSelectionModel

List of all members, including inherited members

Properties

Public Functions

Detailed Description

Although multiple views can share the same QItemSelectionModel, the views then need to have the same source model.

If there is a proxy model between the model and one of the views, or different proxy models in each, this class makes it possible to share the selection between the views.

QAbstractItemModel *model = getModel();

QSortFilterProxyModel *proxy = new QSortFilterProxyModel();
proxy->setSourceModel(model);

QTreeView *view1 = new QTreeView(splitter);
view1->setModel(model);

KLinkItemSelectionModel *view2SelectionModel = new KLinkItemSelectionModel( proxy, view1->selectionModel());

QTreeView *view2 = new QTreeView(splitter);
// Note that the QAbstractItemModel passed to KLinkItemSelectionModel must be the same as what is used in the view
view2->setModel(proxy);
view2->setSelectionModel( view2SelectionModel );
QAbstractItemModel *model = getModel();

QSortFilterProxyModel *proxy1 = new QSortFilterProxyModel();
proxy1->setSourceModel(model);
QSortFilterProxyModel *proxy2 = new QSortFilterProxyModel();
proxy2->setSourceModel(proxy1);
QSortFilterProxyModel *proxy3 = new QSortFilterProxyModel();
proxy3->setSourceModel(proxy2);

QTreeView *view1 = new QTreeView(splitter);
view1->setModel(proxy3);

QSortFilterProxyModel *proxy4 = new QSortFilterProxyModel();
proxy4->setSourceModel(model);
QSortFilterProxyModel *proxy5 = new QSortFilterProxyModel();
proxy5->setSourceModel(proxy4);

KLinkItemSelectionModel *view2SelectionModel = new KLinkItemSelectionModel( proxy5, view1->selectionModel());

QTreeView *view2 = new QTreeView(splitter);
// Note that the QAbstractItemModel passed to KLinkItemSelectionModel must be the same as what is used in the view
view2->setModel(proxy5);
view2->setSelectionModel( view2SelectionModel );

See also kitemmodels: tests/proxymodeltestapp/proxyitemselectionwidget.cpp.

Property Documentation

linkedItemSelectionModel : QItemSelectionModel*

Access functions:

  • QItemSelectionModel *linkedItemSelectionModel() const
  • void setLinkedItemSelectionModel(QItemSelectionModel *selectionModel)

Notifier signal:

  • void linkedItemSelectionModelChanged()

Member Function Documentation

[explicit] KLinkItemSelectionModel::KLinkItemSelectionModel(QObject *parent = nullptr)

KLinkItemSelectionModel::KLinkItemSelectionModel(QAbstractItemModel *targetModel, QItemSelectionModel *linkedItemSelectionModel, QObject *parent = nullptr)

Constructor.

We use cookies to personalize content and to analyze our traffic. Please decide if you are willing to accept cookies from our website.