如何确定委托QML项所在的列表视图?

如何确定委托QML项所在的列表视图?,qml,qt5,Qml,Qt5,我有两个ListView(selection和queue),它们都使用相同的委托 我想在两个列表中以不同的方式呈现一些项目信息 如何确定QML项所在的列表视图?QML中没有我可以访问的item.parent。您可以使用前面提到的ListView.view附加属性,但是有一种更好的方法。如果将代理移动到其自己的QML文件中,例如,delegate.QML,则可以创建该类型的实例,只需设置一个属性即可更改其外观 例如: ListView { // ... delegate: Dele

我有两个ListView(selection和queue),它们都使用相同的委托

我想在两个列表中以不同的方式呈现一些项目信息


如何确定QML项所在的列表视图?QML中没有我可以访问的item.parent。

您可以使用前面提到的
ListView.view
附加属性,但是有一种更好的方法。如果将代理移动到其自己的QML文件中,例如,
delegate.QML
,则可以创建该类型的实例,只需设置一个属性即可更改其外观

例如:

ListView {
    // ...
    delegate: Delegate {
        fancy: true
    }
}

ListView {
    // ...
    delegate: Delegate {
        fancy: false
    }
}
Rectangle {
    property bool fancy

    color: fancy ? "steelblue" : "grey"
    // ...
}
您应该以这样一种方式编写
Delegate
,它知道如何渲染一个奇特的/非奇特的委托。例如:

ListView {
    // ...
    delegate: Delegate {
        fancy: true
    }
}

ListView {
    // ...
    delegate: Delegate {
        fancy: false
    }
}
Rectangle {
    property bool fancy

    color: fancy ? "steelblue" : "grey"
    // ...
}

附加属性呢?是的-代理已经在一个单独的qml文件中-谢谢