Datensatz suchen



  • @M-W Du meinst einen "Cancel" Button...

    Wenn ich grade die QT Doku richtig verstehe, würde man normalerweise QInputDialog::getText ein Pointer auf ein Parent Widget mitgeben.
    Bei QT bin ich mir nicht sicher, ob ein Modal Dialog unbedingt einen Parent braucht um sauber aufgeräumt zu werden.

    Erbt Suchliste von einer QT Klasse?
    oder, wie ist

    formSuchliste->show();
    

    implementiert?
    So wie es da steht, hast du an der Stelle auch einen Memonry Leak, weil Suchliste nirgends wieder gelöscht wird

    So wie ich das sehe, erstellt der Konstruktor von Suchliste den QInputDialog. Wenn der beendet wird, wird formSuchliste->show();aufgerufen und wieder was angezeigt.



  • Hallo Schlangenmensch danke für deine Antwort,
    das ist richtig was du schreibst, " wenn beendet wird, wird fromsuchliste->show(); ausgerufen und wieder was angezeigt. Die Klasse Suchliste erbt von Dialog.

     Klasse erbt von QDialog
    class Suchliste : public QDialog
    

    Aber ich habe was angepasst den QInputDialog mache ich jetzt in der MainWondows Klasse.

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

    Jetzt muss ich nur noch das Attribute vom QString an die andere Klasse übergebe, ich weiß nicht genau ob ich das mit einen Pointer mache oder mit deinjer Membervariablen der Klasse A, dann einen Memberfunktion, die den Wert der Membervariablen zurückgibt



  • Wie sieht denn die Slot-Methode vom "Channel"-Button aus?

    Du hast aber ein generelles logisches Problem:
    du zeigst im Konstruktor von Suchliste den QInputDialog an und möchtest bei "Abbrechen" oder leerem Text die Suchliste-Form wieder schließen. Da du jedoch erst danach show() aufrufst, wird dann in jedem Fall ein leeres Formular angezeigt.

    Mach daraus eine eigene Methode (mit bool als Rückgabewert):

    Suchliste *formSuchliste = new Suchliste();
    if (formSuchliste->ShowInputDialog())
        formSuchliste->show();
    

    PS: Dein Beitrag ist (evtl. aufgrund mangelnder Deutschkenntnisse?) schlecht zu lesen. Meinst du statt "Channel" evtl. "Abbrechen" - also "Cancel" im englischen?



  • Ja ich meine Cancel für Abbrechen sorry. Der Cancel Button wird automatisch mit generiert, wenn das QInputDialog erstellt wird.



  • @M-W Dein else Zweig ergibt doch keinen Sinn, Dialog erstellen und direkt wieder schließen. Oder hab ich was verpasst. Außerdem übergibst du immer noch keinen Parent.

    @M-W sagte in Datensatz suchen:

    Jetzt muss ich nur noch das Attribute vom QString an die andere Klasse übergebe, ich weiß nicht genau ob ich das mit einen Pointer mache oder mit deinjer Membervariablen der Klasse A, dann einen Memberfunktion, die den Wert der Membervariablen zurückgibt

    Hier weiß ich wieder nicht, was du genau meinst. Wenn du den String text an Suchliste übergeben willst, kannst du dem Konstruktor einfach einen Parameter verpassen.

    @Th69 Wenn ich die Doku zu QInputDialog::getText grade richtig überflogen habe, hat der Dialog automatisch einen "ok" und einen "cancel" Button. Wenn "Cancel" geklickt wird, wird ok auf false gesetzt.



  • Ja das mit den else zweig habe ich dann auch gemerkt das es kein sinn macht.



  • @Schlangenmensch: ich weiß leider nicht, was du mir sagen willst. ;- )



  • Aber es handelt sich doch um zweit unterschiedliche Klassen, in der Klasse A wird QLinDialog abgefragt und in einer QString Variable der Nachname gespeichert. In der Klasse B befindet sich die Suchliste.
    Ich muss doch jetzt die QString Variable von Klasse A mit dem Nachnamen an Klasse B mit de Suchliste übergeben.



  • @M-W Dann mach das doch



  • Es hat geklappt, ich übergebe einfach die Instanz über den Konstruktor der anderen Klasse!

     Suchliste *formSuchliste = new Suchliste(text);
    

Log in to reply