[Solved] set (access,highlight) ListView currentItem/currentIndex from C++

  • hi:)
    I would like to highlight the currentItem of the ListView from C++ code according to C++ events, in particular a USB controller input (never mind). I have read many forum posts but did not find a suitable solution. Could you help me?

    My list is simple for the start:
    ListView {
    focus: true
    id: categories
    anchors.fill: parent
    model: myModel
    Row {
    id: foo
    width: foo.ListView.view.width; height: 60
    Text {
    id: t
    text: model.display //I set the model in c++ with setContextProperty
    color: foo.ListView.isCurrentItem ? "white" : "black"
    font { family: "Helvetica"; pixelSize: 16; bold: true }
    anchors {
    left: parent.left; leftMargin: 15
    verticalCenter: parent.verticalCenter
    anchors.fill: parent

            MouseArea {
                anchors.fill: foo
                onClicked: {
                    foo.ListView.view.currentIndex = index
                    myModel.doSth(t.text)  //works
        highlight: Rectangle { color: "green" }
        highlightMoveSpeed: 500



  • You can use Connections QML item to connect to signals from C++ object (that you can set via setContextProperty as you've set model object).

  • Somethink like:

    @Connections {
    target: myModel
    onChangeCurrentIndex: { ... }

    Of course, your model in C++ should have changeCurrentIndex signal.

  • ...I should actually be banned and cast out for such question for not beeing able to look in help accordingly, shouldn't I? ...I still hope i won't be and I am happy that there are people like you patiently answering such questions...

    Of course:
    Connections {
    target: myModel
    onChangeCurrentIndex: {
    categories.currentIndex = idx

    in c++ h/cpp
    void changeCurrentIndex(int idx);


    emit changeCurrentIndex(1);

    this does the job.


Log in to reply