witam, mam taką funkcję szukaj która ma za zadanie w jednej z wersji ukryć wiersz i... działa to oczywiście prawidłowo. Problem w tym, że gdy chcę przywrócić tabelę (skasować literę lub wyraz) do poprzedniej wersji (czyli ustawić aby każdy wiersz był widoczny) to tabela znika cała. Pomaga jedynie całkowite przeładowanie jej i zastanawiam się co spartoliłem.
int rows=DatabaseView->rowHeight(0); //ilość wierszy.
int columns=DatabaseView->columnWidth(0); //ilość kolumn.
for(int i=0; i<rows; ++i)
{
DatabaseView->showRow(i); //myślałem żeby za każdy odwołaniem do funkcji najpierw ustawiać wszystkie wiersze jako widoczne ale to coś nie działa
}
bool *hideRows=new bool [rows];
QString textCell;
bool finded;
//wyszukiwanie tekstu QtableView
for(int i=0; i<rows; ++i)
{
DatabaseView->showRow(i); //ustawiam aby pokazywał każdy wiersz.
hideRows[i]=1;
for(int j=0; j<columns; ++j)
{
textCell=dataFromDatabase->data(dataFromDatabase->index(i,j)).toString();
if((textCell.indexOf(findText->text())>=0)&&(!findText->text().isEmpty()))
{
hideRows[i]=0; //jeżeli znajdziemy dane w komórce to ustawiamy na hideRows[i] na 0 aby utrzymać wyświetlanie tego wiersza.
//kolorowanie tła komórki
dataFromDatabase->setData(dataFromDatabase->index(i,j), Qt::yellow, Qt::BackgroundRole);
DatabaseView->update(dataFromDatabase->index(i,j));
}
else
{
DatabaseView->showRow(i);
dataFromDatabase->setData(dataFromDatabase->index(i,j), Qt::white, Qt::BackgroundRole);
DatabaseView->update(dataFromDatabase->index(i,j));
}
}
//ukrywanie wierszy w których nie znaleziono szukanych danych.
if(hideUnvalidRowsLineEdit->isChecked()&&(hideRows[i]==1))
{
DatabaseView->hideRow(i);
}
}
delete [] hideRows;
}
może Wam uda się coś podpowiedzieć bo ja coś nie widzę błędu ;/