Datensatz suchen

Alles rund um die Programmierung mit Qt
Antworten
M.W
Beiträge: 2
Registriert: 5. Oktober 2021 12:14

Datensatz suchen

Beitrag von M.W »

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.

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();

}
}

M.W
Beiträge: 2
Registriert: 5. Oktober 2021 12:14

Re: Datensatz suchen

Beitrag von M.W »

Habe mal den Code ein bisschen überarbeitet, erstelle jetzt das QInputDialog in mainwindows.cpp von der Klasse MainWindows.

Code: Alles auswählen

void MainWindow::on_buttonKundeSuche_clicked()
{
bool ok = false;
    //wenn eine Verbindung zu Datenbank besteht
    if (dbVerbunden == true)
    {
     QString text = QInputDialog::getText(0, "Datensatz Suchen","Bitte Nachname Eingeben:", QLineEdit::Normal,"", &ok);
     if (ok && !text.isEmpty()) {
         //den Dialog anzeigen
          Suchliste *formSuchliste = new Suchliste();
          formSuchliste->show();

     }else{
          Suchliste *formSuchliste = new Suchliste();
          formSuchliste->close();
     }


   }


}

Wie kann ich den jetzt das gespeicherten Werte von der QString Variable an eine andere Klasse übergebe?
Antworten