ol 值,true 表示成功,false 表示失败。
修改后,只要双击列表项,就会出现文本框,然后你可以输入新的值,输完后按“回车”键,或者移开焦点(如点击其他空白地方),就会触发更新。
但是,你会发现一个问题:进入编辑状态时,文本框里都是空的。如下图:
这不合理,应该显示原有的值让用户修改。造成编辑状态下初始值空白的原因是咱们前面的 data 方法。因为咱们在返回值的时候,只判断了在 DisplayRole 角色下才返回,当视图进入编辑状态后,调用 data 方法获取数据时,role 参数的值是 EditRole,这就导致获取到空值。
回去修改一下 data 方法的代码。
QVariant MyItemModel::data(const QModelIndex &index, int role) const
{
// 注意 role 这个参数,返回前必须判断
if(role == Qt::DisplayRole || role == Qt::EditRole)
{
……
}
……
}
现在,双击列表项或按【F2】键进入编辑状态,文本框中的初始值就不会空白了。
好了,关于怎么继承列表模型的公共基类的话题,咱们就扯到这儿了。