ich arbeite zur Zeit an einer Art Front-End für eine MySQL Datenbank.
Ich habe nun eine QTableView als View und ein QSqlRelationalTableModel als Model. Funktioniert soweit alles prima.
Nun habe ich in meiner Datenbanktabelle einen Eintrag den ich für die View ausblenden will. Also habe ich meine eigene QSortFilterProxyModel-Klasse geschrieben. Das Ausblenden funktioniert auch.
Allerdings bekomme ich nun Probleme beim Hinzufügen von neuen Einträgen in die TableView.
Bisher (vor QSortFiltProxyModel) sah das Ganze so aus (Neue Einträge wurden immer oben eingefügt (nach primary key sortiert, je höher desto weiter oben)
Code: Alles auswählen
void MainWindow::insertEntry() {
int row = model->rowCount();
model->insertRow(row);
if(row==0) row=1;
model->setData(model->index(row-1, 1),DUMMY_ENTRY);
model->setData(model->index(row-1, 2),DUMMY_ENTRY);
model->setData(model->index(row-1, 3),DUMMY_ENTRY);
QModelIndex index = model->index(row-1, 1);
ui.tableview->setCurrentIndex(index);
ui.tableview->edit(index);
model->submitAll();
}
Code: Alles auswählen
void MainWindow::insertEntry() {
int row = proxymodel->rowCount();
if(proxymodel->insertRow(row)){
if(row==0) row=1;
proxymodel->setData(proxymodel->index(row-1, 1),DUMMY_ENTRY);
proxymodel->setData(proxymodel->index(row-1, 2),DUMMY_ENTRY);
QModelIndex index = proxymodel->index(row-1, 1);
ui.tableview->setCurrentIndex(index);
ui.tableview->edit(index);
model->submitAll();
}
}
Vielleicht kann mir einer erklären, ob ich einen Fehler beim Index mache. Auch mir selbst kommt das row-1 etwas komisch vor, aber das war notwendig für die korrekte Funktionsweise ohne Proxy notwendig. Doch nun mit Proxy komm ich irgendwie nicht mehr klar. Weder mit noch ohne "-1" funktioniert es korrekt.
Wäre für jeden Tipp dankbar.
Viele Grüße
jerry42