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