2014-07-21 3 views
0
QString search = ui->searchComboBox->currentText(); 
if(search.isEmpty()){ 
    search = "*"; 
} 

files = currentDirectory.entryList(QStringList(search), 
    QDir::Files | QDir::NoSymLinks); 

이 코드는 QString 검색이 비어있을 때 파일을 반환합니다. 그러나 searchComboBox에 텍스트를 입력해도 결과가 없습니다.검색 상자에서 반환 된 파일 필터링 QT

예를 들어, 'don300.png'라는 디렉토리에 파일이 있고 '돈'을 검색하면 검색 결과가 나타나지 않습니다.

파일 이름 내에서 문자열을 검색 할 때 어떻게 작동하는지 잘 모르시겠습니까?

답변

1

와일드 카드가없는 검색 패턴은 완전 일치를 수행합니다. 귀하의 경우에는 텍스트 상자가 비어 있지 않으면 정확히이라는 과 일치합니다. searchComboBox 다음 * 될 것입니다 검색 필터를 제공하는 것이다이라면 패턴이 don* (don를 시작하는 모든 파일을 일치하는 (예를 들어)입니다 검색 비어

QString search = ui->searchComboBox->currentText() + "*"; 
files = currentDirectory.entryList(QStringList(search), 
    QDir::Files | QDir::NoSymLinks); 

경우에 그냥 코드를 변경). 당신이 사용할 수 있도록

일반적으로 좀 더 자유롭게 텍스트와 일치 할 수 있습니다 : 그냥 참조

QString search = ui->searchComboBox->currentText(); 
if(search.isEmpty()) { 
    search = "*"; 
} else { 
    search = "*" + search + "*"; 
} 

files = currentDirectory.entryList(QStringList(search), 
    QDir::Files | QDir::NoSymLinks); 

을 : 좋은 대답과 설명 꽃 봉오리의

 
    Search pattern Results 
    *     Any file. 
    don*    Files that begin with "don". 
    *don*    Files that contain "don". 
+0

합니다. 와일드 카드에 %를 사용하려고했습니다. 다른 언어에서 사용한 적이 있지만 작동하지 않습니다. 나는 *가 이것을 위해 사용된다는 것을 알아야했습니다! 위대한 작품, 감사합니다 :) – sark9012

관련 문제