是否有更适合键值数据结构的QAbstractItemModel类型/接口?

时间:2016-12-15 15:20:18

标签: c++ qt qml qabstractitemmodel

QAbstractItemModel非常面向表格,并且非常适合完全可用于处理由行/列号以外的键索引的数据。

有没有办法比一堆Q_INVOKABLE函数和自定义更新处理更好地处理这个问题?

1 个答案:

答案 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())可以存储私有数据,如果您需要将该值与索引捆绑在一起,那么除了行/列之外,没有什么可以阻止您创建包含键值的索引由于某些原因。请注意,持久索引机制也适用于您 - 只要您必须发出正确的行插入/移除信号。