0
IM設置項在QListWidget並在每個QListWidgetItem IM設置ID這樣QListWidgetItem:每次IM添加itemi希望前在QListWidget我如何檢查是否已經存在,基於其數據成員
newItem->setData(Qt::DisplayRole,ID);
現在檢查列表中是否已有相同數據的項目。 我怎麼能做到這一點。我不認爲findItems將幫助我在這裏
IM設置項在QListWidget並在每個QListWidgetItem IM設置ID這樣QListWidgetItem:每次IM添加itemi希望前在QListWidget我如何檢查是否已經存在,基於其數據成員
newItem->setData(Qt::DisplayRole,ID);
現在檢查列表中是否已有相同數據的項目。 我怎麼能做到這一點。我不認爲findItems將幫助我在這裏
讓我假設類型的ID
是int
(因爲你沒有指定的話)。
bool found = false;
for (int i = 0; i < list->count(); ++i) {
if (list->item(i)->data(Qt::DisplayRole).toInt() == ID_to_match) {
found = true;
break;
}
}
if (!found) {
do_something_here();
}
我喜歡避免循環... – user63898 2011-03-31 08:12:44
我沒有其他的辦法可以想到。這是一種搜索:按「數據」字段搜索。一般情況下,你不能完成比'O(n)'更快的搜索(不考慮關於二分搜索的問題等)什麼需要循環。如果你不操作數十億項目,這應該足夠快。特別是如果'ID'的類型足夠簡單,可以比較,比如'int'。如果你想要,你可以創建一個名爲'search_by_data'的獨立函數,並將代碼放在這裏。 – maverik 2011-03-31 08:17:34