2014-01-06 2 views
0

Я хочу отфильтровать все свои данные, набрав строку, звучит просто. Это то, что я до сих пор:Qt - Разделить и использовать строку из строкиEdit как regExp

stringToSearch.replace(QRegExp(" "), "|"); 

QRegExp regExp(stringToSearch,Qt::CaseInsensitive, QRegExp::Wildcard); 

model->removeRows(0,model->rowCount()); 
for(int row = 0; row < stringsInTable.filter(regExp).count(); row++) 
{ 
    model->appendRow(new QStandardItem(QString(stringsInTable.filter(regExp).at(row)))); 
} 

Это прекрасно работает, если я просто поиск одного слова или, если я ищу с «*» между словами, если они приходят в правильном порядке, то есть. Но как я могу искать несколько слов, а порядок слов не должен иметь значения?

ответ

3

Вы должны использовать функцию Positive Lookahead и построить строку регулярного выражения, используя все введенные слова. Вот краткий пример (допустим, ввод one two three):

QRegExp re("^(?=.*one)(?=.*two)(?=.*three).*$"); 
qDebug() << re.exactMatch("two three one four"); // returns true