首页 文章

QML - 在DelegateModel中检索委托的索引

提问于
浏览
0

我无法检索在 DelegateModel 中为 ListView 实例化的委托的 index . 最小的例子如下:

LastProcedures.qml

ListModel {
ListElement {
    procedure: "Liver Resection"
    surgeon: "Prof. Dr. Joyride"
    recent: true
    }
    ...
}

main.qml

ListView {
        id: list_lastProcedures
        model: displayDelegateModel
    }
DelegateModel {
    id: displayDelegateModel
    delegate: lastProceduresDelegate
    model: LastProcedures {}
    groups: [
                DelegateModelGroup {
                    includeByDefault: false
                    name: "recent"
                }
            ]
    filterOnGroup: "recent"
    Component.onCompleted: {
        var rowCount = model.count;
        items.remove(0,rowCount);
        for( var i = 0;i < rowCount;i++ ) {
            var entry = model.get(i);
                // Only the recent three
                if((entry.recent == true) && (items.count < 3)) {
                    items.insert(entry, "recent");
                }
            }
        }
    }
Component {
    id: lastProceduresDelegate
    Text{
        text: model.index
    }
}

文本索引始终打印-1 . 如果没有DelegateModel,它会在ListView中打印索引 . 如何在Listview中访问委托的正确索引?

2 回答

  • 1

    我最终没有删除所有条目并将它们添加回组,而是删除不需要的条目 . 这使索引保持有效 . 如果有人能够进一步解释这种行为,那就太好了 .

    DelegateModel {
        id: displayDelegateModel
        delegate: lastProceduresDelegate
        model: LastProcedures {}
        groups: [
                    DelegateModelGroup {
                        includeByDefault: true
                        name: "recenttrue"
                    }
                ]
        filterOnGroup: "recenttrue"
        Component.onCompleted: {
            for( var i = 0;i < items.count;i++ ) {
                var entry = items.get(i).model;
                // Only the recent
                if((entry.recent != true)) {
                    items.removeGroups(i, 1, "recenttrue");
                }
            }
        }
    }
    
  • 0

    你可以用“lastProceduresDelegate.DelegateModel.itemsIndex”代替“model.index”

    像这样:

    Component {
        id: lastProceduresDelegate
        Text{
            text: lastProceduresDelegate.DelegateModel.itemsIndex
        }
    

相关问题