QString search = ui->searchComboBox->currentText();
if(search.isEmpty()){
search = "*";
}
files = currentDirectory.entryList(QStringList(search),
QDir::Files | QDir::NoSymLinks);
Этот код возвращает файлы, когда поиск QString
пуст. Однако, когда я ввожу какой-либо текст в searchComboBox
, результатов нет.
Например, если в каталоге, который я ищу, называется "don300.png", и я ищу "дон", я не получаю никаких результатов.
Не знаете, как это работает при попытке поиска строки в любом месте имени файла?
Шаблон поиска без подстановочных знаков будет выполнять точное совпадение. В вашем случае, если текстовое поле не пустое, оно будет совпадать только с этим именем. Просто измените свой код на:
QString search = ui->searchComboBox->currentText() + "*";
files = currentDirectory.entryList(QStringList(search),
QDir::Files | QDir::NoSymLinks);
Если searchComboBox
пуст, поиск будет *
и если вы предоставите фильтр, то шаблон поиска будет (например) don*
(сопоставление всех файлов, начинающихся с don
).
В общем, вы можете захотеть совместить текст более свободно, чтобы вы могли использовать это:
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".