产生正确/错误以控制可见性的复杂逻辑

时间:2018-10-02 07:50:19

标签: qt qml qlistview

我有以下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
    }
}

我打算使用复杂的逻辑来控制visibility上每一行的ListView。我的意思是,要设置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
}

如何使用这种复杂的逻辑来控制visibility行中的ListView


我必须使用Qt 5.9.4

1 个答案:

答案 0 :(得分:1)

如果需要复杂的模型,请对QAbstractListModel进行子类化。在这里,您可以定义自己的角色来获得可见性以及所需的任何逻辑。或者,将您的逻辑缩短为三元运算符。