我创建了一个非常小的QAbstractListModel,它有两个角色:display
和test
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
}
}
问题是,当我使用display
role时,文本显示为2
,但当我在qml中使用test
时,字符串显示正确
使用test
角色
使用显示
角色时
这个2
是从哪里来的?
显示
是Button的属性。
使用来自模型的数据时,始终使用model.
前缀消除歧义(model.display
)。