Тема: Qt проблема з нумерацією таблиці, або як правильно шукати в таблиці
В мене є таблиця в якій потрібно шукати по двом стовпцям одночасно, я читав про QSortFilterProxyModel і метод setFilterRegExp але так і не знайшов інформації як шукати одночасно по двом стовпцям, все що в мене вийшло це задати ключовий стовпець setFilterKeyColumn і шукати по цьому стовпцю за допомогою регулярного виразу, тому я вирішив зробити власний метод для пошуку
Він (selectFields) отримує таблицю (QTableView), лист (масив) чисел що відповідають в яких стовпцях шукати (зараз це 1, 2. 1 - назва, 2 - виробник) і рядок(QString search) який потрібно знайти
якщо рядок не знаходиться то він просто приховується table->hideRow(i);
void table_operation::selectFields(QTableView *table, QList<int> *listColumn, QString search)
{
int countRows( table->model()->rowCount() );// Рахує рядки
int countColumns = listColumn->count(); // Рахує по скільком стовпцям буде вестися пошук
bool allRecord( false ); // Відповідає чи потрібно приховувати або показувати рядок
for(int i = 0; i < countRows; i++)// По рядкам
{
for(int j = 0; j < countColumns; j++) // По стовпцям
{
allRecord |= /* Чи є шуканий рядок */
table->model()->index(i, listColumn->at( j )).data().toString().contains(search, Qt::CaseInsensitive);
}
if( allRecord )
table->showRow(i); //Показати (хоча це не потрібно бо зараз всі рядки видно)
else
table->hideRow(i); //Приховати рядок
allRecord = false;//збити
}
}
Хоч метод правильно шукає але він робить нумерацію не правильною, я так розумію щоб нумерація була правильною потрібно в setVerticalHeader передати власний QHeaderView але щось в мене нічого не вийшло.
Як шукати по декількох стовпцях одночасно, або як зробити правильну нумерацію ?