提问者:小点点

QAbstractListModel在Qt::DisplayRole上返回未预期的结果


我创建了一个非常小的QAbstractListModel,它有两个角色:displaytest

InvoiceTabModel::InvoiceTabModel(QObject *parent): QAbstractListModel(parent)
{

}

QVariant InvoiceTabModel::data(const QModelIndex &index, int role) const
{
    Q_UNUSED(index)
    if(role == 123)
        return QVariant("testRole");
    return QVariant("displayRole");
}

int InvoiceTabModel::rowCount(const QModelIndex &parent) const
{
    Q_UNUSED(parent)
    return 3;
}

QHash<int, QByteArray> InvoiceTabModel::roleNames() const
{
    return { {Qt::DisplayRole, "display"}, {123, "test"} };
}

我把这个模型装在一个中继器上

Repeater{
    id: invoiceTab
    anchors.fill: parent
    model: invoice.tabmodel
    Button{
        width: 100
        height: parent.height
        text: test
        //text: display
    }
}

问题是,当我使用displayrole时,文本显示为2,但当我在qml中使用test时,字符串显示正确

使用test角色

使用显示角色时

这个2是从哪里来的?


共1个答案

匿名用户

显示是Button的属性。

使用来自模型的数据时,始终使用model.前缀消除歧义(model.display)。