产生 true/false 以控制可见性的复杂逻辑

Complex logic which produces true/false to control visibility

我有以下 QML 代码:

ListView {
    model: ListModel {
        ListElement {
            eleText: "Me"
            eleFirst: true
            eleSecond: true
        }
        ListElement {
            eleText: "My GF"
            eleFirst: false
            eleSecond: false                         
        }
        ListElement {
            eleText: "Ben Dover"
            eleFirst: true
            eleSecond: false
        }
    }
    delegate: Row {
        visible: true
        Label: eleText
    }
}

我打算用一个复杂的逻辑来控制 ListView 上每一行的 visibility。我的意思是,要设置 visible: 字段,我喜欢这种复杂的逻辑:

if( someObject.getStatus() == "first" ) {
    if (eleFirst) {
        return true;
    } else {
        return false;
} else if ( someObject.getStatus() == "second" ) {
    if (eleSecond) {
        return true;
    } else {
        return false;
    }
} else {
    // Should not get here
    // throw errors
}

如何使用如此复杂的逻辑来控制 ListView 行的 visibility


我必须使用 Qt 5.9.4

如果您想要一个复杂的模型,请子类化 QAbstractListModel。在那里,您可以定义自己的可见性角色以及您需要的任何逻辑。或者将您的逻辑缩短为三元运算符。