Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

QML GridView - report current selection to C++ code

$
0
0
What I’ve found is that currently the easiest way to know whenever the GridView’s currently selected index has changed is to create a helper class that has a Qt metasystem registered property: Q_PROPERTY( int selectedIndex READ selectedIndex WRITE setSelectedIndex NOTIFY selectedIndexChanged ) Then make your helper class accessible by QML: qmlRegisterType< ItemSelectionModelQmlHelper >( "Models.Tools", 1, 0, "ItemSelectionModelQmlHelper" ); Then create an instantiate of this class and expose it to QML: QDeclarativeView* const view = new QDeclarativeView; ItemSelectionModelQmlHelper* const helper = new ItemSelectionModelQmlHelper( this ); view->rootContex()->setContextProperty( "_itemSelectionModelQmlHelper", helper ); Then one can create the QItemSelectionModel and listen to the helper’s signal, so that to set the current index of the QItemSelectionModel. Of course as mentioned above, if you use a sorting or filtration of the data being displayed in the GridView the currently selected GridView item’s index may not correspond to a row in your QAbstractItemModel derived class. This won’t be the case if you have done the filtration and/or sorting in C++ using the QSortFilterProxyModel. The problem with the non-coresponding index will arise only if you do the sorting/filtration in QML. It would be best if GridView has the option to specify a selection model.

Viewing all articles
Browse latest Browse all 4972

Trending Articles