Datensatz suchen
Verfasst: 5. Oktober 2021 12:22
Habe mir über Sqlite einen Datensatz über die Eingabeaufforderung angelegt, über Qt eine grafische Oberfläche teileweis im Designer kriert oder im Code. Auf der Grafischen Oberfläche sind mehrere Schaltflächen wo ich einen Datensatz anlegen kann, Einzellern abfragen kann oder mir alle Datensätze anzeigen lassen kann. Jetzt habe mir ein weitere Schaltfläche erstellt womit ich einen Datensatz suchen möchte. Um nach einen bestimmten Datensatz zu suchen mache ich diese über ein QInputDialog, es öffnet sich ein Eingabefeld um den Nachnamen ein zu geben und ein OK und Channel, Button gebe ich einen Namen ein und drücke ich den Ok Button öffnet sich der gesuchte Datensatz.
Betätige ich den Channel Button sollte sich das Eingabefeld schließen und ich mir die erste Grafische Oberfläche anzeigen um erneut den Button suchen zu betätigen. Doch es schiebt sich ein weiteres Fenster vor diese Grafische Oberfläche. Alles ob mir über die Instanz und show() close() unwirksam gemacht wird.
Betätige ich den Channel Button sollte sich das Eingabefeld schließen und ich mir die erste Grafische Oberfläche anzeigen um erneut den Button suchen zu betätigen. Doch es schiebt sich ein weiteres Fenster vor diese Grafische Oberfläche. Alles ob mir über die Instanz und show() close() unwirksam gemacht wird.
Code: Alles auswählen
//die Slots
void MainWindow::on_buttonKundeSuche_clicked()
{
//wenn eine Verbindung zu Datenbank besteht
if (dbVerbunden == true)
{
//den Dialog anzeigen
Suchliste *formSuchliste = new Suchliste();
formSuchliste->show();
}
}
//der Konstruktor
//er erstellt den kompletten Inhalt
Suchliste::Suchliste()
{
bool ok = false;
QString text = QInputDialog::getText(0, "Datensatz Suchen","Bitte Nachname Eingeben:", QLineEdit::Normal,"", &ok);
if (ok && !text.isEmpty()) {
QString sqlAbfrage = "nachname = '" + text + "'";
//das Modell erstellen
QSqlTableModel *modell = new QSqlTableModel(this);
//die Tabelle setzen
modell->setTable("kunden");
// modell->setFilter("nachname = 'Hans'");
modell->setFilter(sqlAbfrage);
setWindowTitle("Suchanzeige Kunden");
//die Texte für die Spaltenköpfe setzen
modell->setHeaderData(0, Qt::Horizontal, "ID");
modell->setHeaderData(1, Qt::Horizontal, "Vorname");
modell->setHeaderData(2, Qt::Horizontal, "Name");
modell->setHeaderData(3, Qt::Horizontal, "Strasse");
modell->setHeaderData(4, Qt::Horizontal, "PLZ");
modell->setHeaderData(5, Qt::Horizontal, "Ort");
modell->setHeaderData(6, Qt::Horizontal, "Telefon");
//die Daten beschaffen
modell->select();
//die TableView erstellen
QTableView *ansicht = new QTableView(this);
//mit dem Modell verbinden
ansicht->setModel(modell);
//die Breite der Spalten an den Inhalt anpassen
ansicht->resizeColumnsToContents();
//die Größe setzen
ansicht->resize(500,300);
}
else{
this->close();
}
}