Предустановка currentIndex в QML TreeView

Я использую QML TreeView, чтобы перечислить некоторые категоризированные параметры для выбора пользователем.

Используя свойство TreeView.selection, я назначил SlectionModel древовидной структуре. У меня проблема с предварительным выбором элемента. С использованием

treeView.selection.setCurrentIndex (idx, 3)

Я устанавливаю только свойства модели выбора (элемент будет правильно выбран / выделен), но treeView.currentIndex по-прежнему недействителен. И при использовании клавиш вверх / вниз он перейдет к первому элементу.

Что мне не хватает?

 ItemSelectionModel {
        id: treeViewSelectionModel
        objectName: "treeViewSelectionModel"
        model: myModel
        onCurrentChanged:{console.log("Selectio - current changed from ",previous, " to ", current)}

    }

    TreeView {
        focus: true
        id: treeView
        objectName: "treeView"
        headerVisible: false    //to hide the header

        TableViewColumn {
            title: "Name"
            role: "name"
        }
        model: myModel

        selectionMode: SelectionMode.SingleSelection
        selection: treeViewSelectionModel

        Component.onCompleted: {
            var idx = treeView.model.getPreselected();
            console.log("preselected",idx);
          treeView.selection.setCurrentIndex(idx,ItemSelectionModel.Select);
            treeView.selection = treeView.selection
            //These logged current indexes does not match
            console.log("treeView.currentIndex",treeView.currentIndex);
            console.log("treeView.selection.currentIndex",treeView.selection.currentIndex);

            updateGuiSize();
            treeView.forceActiveFocus();
        }

    }

person fish    schedule 15.03.2018    source источник


Ответы (1)


Проблема в том, что treeView.currentIndex и treeView.selection.currentIndex не совпадают. Если вы перейдете к установке значения treeView.currentIndex, он будет доступен только через скрытую переменную __listView.

        __listView.currentIndex = idx.row

РЕДАКТИРОВАТЬ: я нашел другой вариант

         treeView.__currentRow = idx.row
person Igor Kamyshev    schedule 29.03.2018
comment
Разве ваше последнее предложение не изменило бы выбор ROW, но не выбор ITEM? - person TSG; 19.04.2021