@tajny_agent:
Twoje rozwiązanie jest dobre ale mam jeden problem. Spójrz na zrzut ID które mam w bazie
pIDstatusWypoz
mam 29, 30, 31, 32... i jak coś usunę i następnie dodam, to te ID się zmieni na zupełnie inne, może być to np 100. Więc jaki jest problem ?
- Pierwszy problem jest taki, że napisałem sobie coś takiego
(...)
tblViewLoanStatus->setSelectionBehavior(QAbstractItemView::SelectRows); //to trzeba dodać aby z widoku można było wybierać wiersze
(...)
void LoanStatusWindow::onRemoveClicked()
{
QModelIndexList setIndexes = tblViewLoanStatus->selectionModel()->selectedRows();
for(int i=0; i<setIndexes.count(); ++i){
QModelIndex idx;
idx = setIndexes.at(i);
qDebug()<< idx.row();
}
}
Po napisaniu powyższej funkcji faktycznie pokazuje mi się wskazany wiersz do usunięcia np 0, 1, 2, 3... etc...
Teraz po złożeniu wszystkich informacji w całość, to funkcja onRemoveClicked
zwróci mi wiersz do usunięcia np niech będzie to wiersz 3, tyle, że pod wierszem 3 mam pIDstatusWypoz
= 32
więc jak to spiąć w całość aby w ogóle to działało prawidłowo ? Bo 3 != 32
i zapytanie z bazy nawet nie usunie tego wiersza.
- Drugi problem jest taki, że nie wiem co oznaczają i co robią te linijki twojego kodu (dlatego napisałem swój kod, który rozumiem)
auto getId = [](auto const& entry) noexcept { return entry.data(columnWithId).toInt(); };
oraz
std::transform(selectedIndexes.cbegin(), selectedIndexes.cend(), std::back_inserter(ids), getId);