diff options
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index df97b3a..6d67007 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -182,5 +182,23 @@ void FileWidget::writeSettings(){ } void FileWidget::searchFile(){ - + mFileView->selectionModel()->clear(); + int count = mProxy->rowCount(); + if(mSearchFile->text().isEmpty()){ + return; + } + QRegularExpression regex(mSearchFile->text(), QRegularExpression::CaseInsensitiveOption); + int success = 0; + for(int i = 0; i < count; ++i){ + QModelIndex cur = mProxy->index(i, 1); + QString fn = cur.data().toString(); + QRegularExpressionMatch m = regex.match(fn); + if(m.hasMatch()){ + ++success; + mFileView->selectionModel()->select(cur, QItemSelectionModel::Select | QItemSelectionModel::Rows); + if(success == 1){ + mFileView->scrollTo(cur); + } + } + } } |