2011-03-31 4 views
0

메신저 설정 항목의 QListWidget에서와 같은 각 QListWidgetItem 메신저 설정 ID를 기반으로 존재하는 경우 내가 확인 할 목록에 같은 데이터가있는 항목이 있는지 확인하십시오. 어떻게 할 수 있습니까? findItems가 여기에 도움이되지 않을 것이라고 생각합니다.방법 QListWidgetItem 이미 데이터 멤버

답변

2

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(); 
} 
+0

내가 루프를 피하기 위해 같은 ... – user63898

+1

은 내가 생각할 수있는 다른 방법은 없습니다. 그것은 일종의 검색입니다 :'data' 필드로 검색하십시오. 루프를 필요로하는 일반적인 경우 (바이너리 검색 등에 관한 질문을 고려하지 않음)에서'O (n) '보다 빨리 검색을 완료 할 수 없습니다. 수십억 개의 아이템을 사용하지 않는다면이 정도면 충분할 것입니다. 특히'ID'의 타입이'int'처럼 비교하기에 충분히 간단하다면 말이죠. 위의 코드를 원한다면'search_by_data'와 같은 별도의 함수를 생성 할 수 있습니다. – maverik

관련 문제