是否可以使用Javascript逻辑在QML中的委托之间进行选择?

uplii1fm  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(130)

目前我有一个从外部文件(PeriodicTableDelegate.qml)加载委托的RepeaterItem。是否可以使用Javascript逻辑在两个不同的委托之间进行选择?例如,可能像这样:
正常:

Repeater {
    model: elementModel
    
    delegate: PeriodicTableDelegate {
    height: gridview.cellHeight
    selectionModel: itemSelectionModel
    width: gridview.cellWidth
    x: (group - 1) * width
    y: (period - 1) * height
    }          
}

我希望它如何工作:

Repeater {
    model: elementModel
    
    delegate: pickDelegate() ? PeriodicTableDelegate : SomeOtherDelegate {
    height: gridview.cellHeight
    selectionModel: itemSelectionModel
    width: gridview.cellWidth
    x: (group - 1) * width
    y: (period - 1) * height
    }          
}
function pickDelegate(){
   return window.height > 60
}
vaqhlq81

vaqhlq811#

答案是肯定的。正如评论中提到的,有很多方法可以做到这一点,但你在问题中写的几乎已经起作用了。唯一缺少的是您可能希望将委托声明为Components。虽然函数可以为条件函数工作,但使用依赖于属性绑定的声明式样式更有意义。

Component {
    id: periodic
    PeriodicTableDelegate {
        // initialize stuff
    }
}

Component {
    id: other
    SomeOtherDelegate {
        // initialize stuff
    }
}

property bool someCondition: window.height > 60

Repeater {
    model: elementModel
    delegate: someCondition ? periodic : other
}

相关问题