QAbstractItemModel
非常面向表格,并且非常适合完全可用于处理由行/列号以外的键索引的数据。
有没有办法比一堆Q_INVOKABLE
函数和自定义更新处理更好地处理这个问题?
答案 0 :(得分:1)
您只需拥有strict total order的钥匙即可。然后,键和行号之间始终存在唯一的1:1映射。你已经完成了。
行/列号的存在并不意味着您不能公开键值存储。在各自的列中公开键和值。要有效获取给定键的索引,您需要一个类似<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
>
<EditText
android:textCursorDrawable="@null"
android:id="@+id/email_field"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="start"
android:gravity="center_horizontal"
android:hint="@string/email_label"
android:inputType="textEmailAddress"
android:textColor="#484848" />
<View
android:id="@+id/login_bar"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/email_field"
android:background="#e1e1e1" />
</RelativeLayout>
的方法。
此外,鉴于QModelIndex index(const QVariant &key, const QModelIndex &parent = QModelIndex())
可以存储私有数据,如果您需要将该值与索引捆绑在一起,那么除了行/列之外,没有什么可以阻止您创建包含键值的索引由于某些原因。请注意,持久索引机制也适用于您 - 只要您必须发出正确的行插入/移除信号。