要避免使用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. 防止重複(VB.NET)
- 5. 防止重複卡
- 6. 防止重複的行值
- 7. SQLAlchemy,防止重複行
- 8. <rich:listShuttle> - 防止重複?
- 9. 防止列表框重複
- 10. 防止重複串JAVA
- 11. 防止添加重複值
- 12. 防止重複使用jsessionid
- 13. 防止重複條目parse.com
- 14. Informix防止重複結果
- 15. 防止重複插入時
- 16. mySQL - 防止重複預訂
- 17. 防止重複UltiSnips匹配
- 18. 防止重複更新CFgrid
- 19. SQL防止重複輸入
- 20. 防止重複預訂
- 21. 防止重複pugixml :: xml_node
- 22. Grails防止重複插入
- 23. 防止重複enteries sql php
- 24. 防止重複項指數
- 25. 防止重複猜測
- 26. IsolationLevel.RepeatableRead以防止重複
- 27. CloudKit:防止重複記錄
- 28. Django - 防止重複記錄
- 29. 防止重複blockchain攻擊
- 30. 防止重複條目