要避免使用QStandardItemModel作为模型的QListView中的重复项的方法是什么?数据添加与拖动&下降,所以我试图覆盖QStandardItemModel :: dropMimeData,这似乎有点奇怪,因为我需要重写QStandardItemModel :: mimeData(和重新编码数据/ decodeData)以及。这必须更容易!QListView&QStandardItemModel - 防止重复
0
A
回答
0
好吧,我设法通过重写而QListView :: dataChanged,检查是否有与在模型中的Qt :: DisplayRole相同数据的多个项目下降和删除后,一个解决这个如果有的话。基本上,它看起来像这样:
void MyListView::dataChanged(QModelIndex topLeft, QModelIndex bottomRight)
{
// there can be only one item dragged at once in my use case
if(topLeft == bottomRight)
{
QStandardItemModel* m = static_cast<QStandardItemModel*>(model());
// if theres already another item with the same DisplayRole...
if(m->findItems(topLeft.data().toString()).count() > 1)
{
// ... we get rid of it.
model()->removeRow(topLeft.row());
}
}
else
{
// let QListView decide
QListView::dataChanged(topLeft, bottomRight);
}
}
这是迄今为止并不完美(例如,如果你可以一次降一个以上的项目),但它的工作原理对于简单的用例。
0
我能看到的最简单的方法是创建自己的代理模型。
相关问题
- 1. QListView与QStandardItemModel不显示通过代码
- 2. SQLite:防止重复
- 3. 如何防止重复项
- 4. 防止重复串JAVA
- 5. 防止重复阵列
- 6. 防止重复blockchain攻击
- 7. 防止重复项指数
- 8. Django - 防止重复记录
- 9. <rich:listShuttle> - 防止重复?
- 10. perl防止键值重复
- 11. SQLAlchemy,防止重复行
- 12. 防止添加重复值
- 13. 防止重复猜测
- 14. 防止重复条目
- 15. IsolationLevel.RepeatableRead以防止重复
- 16. mySQL - 防止重复预订
- 17. 防止重复更新CFgrid
- 18. 防止IndexedDB中的重复Blob对象
- 19. MySQL的自动防止重复插入
- 20. 防止多线程重复记录
- 21. 在ASP防止重复submiting:CommandField中
- 22. 防止重复与贝宝IPN
- 23. 防止密码重复使用Devise
- 24. 防止重复输入消息
- 25. 在SELECT查询中防止重复COUNT
- 26. 防止重复jquery选项卡
- 27. 防止添加重复值html表
- 28. 防止ASP.Net(C#)中的重复回发
- 29. 防止ABNF中的重复字符
- 30. Java嵌套循环防止重复