Ich stelle Daten aus einer MySQL DB in einer QTableView mittels eines QSqlRelationalTableModel dar. Dies klappt auch wunderbar.
Mit einigen Combos und CheckBoxes würde ich gerne die Ausgabe in der Tabelle filtern.
Nun habe ich zwei Probleme:
1. Problem:
Wie kann ich eine Abfragekombination erstellen?
Wenn ich mit setFilterRegExp() eine Filterung durchführe, werden natürlich die Zustände der anderen Combos ignoriert.
Code: Alles auswählen
proxyModel->setFilterRegExp(comboBoxEPTerm->currentText() );
Code: Alles auswählen
void tableModel::filterRegExpChanged()
{
QRegExp::PatternSyntax syntax = QRegExp::PatternSyntax(comboBoxEPTerm->itemData(comboBoxEPTerm->currentIndex()).toInt());
Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive;
QRegExp regExp(lineEditSearch->text(),caseSensitivity,syntax);
proxyModel->setFilterRegExp(regExp);
personTableView->setModel(proxyModel);
}
2. Problem:
Ich verwende Relationale DB. Wenn ich nun eine Suche durchführe und den Datensatz bearbeiten möchte löst mir das ProxyModel die Relationen nicht auf. Es stehen zwar die richtigen Einträge in der Tabelle, wenn ich sie jedoch verändern will kann ich nicht mehr aus einer ComboBox die Relations auswählen sondern nur den Text ändern. Wenn ich den Text ändere und speicher verschewindet der ganze Eintrag
Ich dachte es müsste irgendwie mit ModelIndex und mapFromSource gehen... aber da hänge ich total.
[PS.:] Ich hab eine ähnliche Frage beireits im Forum gestellt, bitte köpft mich nicht!