Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Methode aufrufen einer anderen Klasse

Methode aufrufen einer anderen Klasse

Scheduled Pinned Locked Moved Unsolved German
6 Posts 3 Posters 945 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    M.W43
    wrote on 15 Oct 2021, 13:01 last edited by
    #1

    Ich möchte aus der Klasse MainWindow eine Mthode aufrufen, allerdings befindet sich die Methode in einer anderen Klasse KundeEinzel.
    Rufe ich jetzt die Methode auf, indem ein Objekt in der Klasse MainWindow ein Objekt der Klasse KundeEinzel erzeuge, und dann diese Methode aufrufe?

    Klasse MainWindos

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    //für die SQL-Klassen
    //außerdem muss in der Projektdatei der Eintrag sql hinzugefügt werden
    #include <QtSql>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
        //stellt die Verbindung zur Datenbank her
        bool dbVerbinden();
        void check();               // benötige Methode
    
    private:
        Ui::MainWindow *ui;
        //steht die Verbindung zur Datenbank?
        bool dbVerbunden;
        //für die Datenbank
        QSqlDatabase datenbank;
    
    //die überschriebene Methode beim Schließen des Fensters
    protected:
        void closeEvent(QCloseEvent *event);
    
    private slots:
        //die Slots
        //sie nutzen den AutoConnect-Mechanismus
        void on_buttonListenAnzeigeKunde_clicked();
        void on_buttonEinzelAnzeigeKunde_clicked();
        void on_buttonNeuerEintragKunde_clicked();
        void on_buttonListenAnzeigeFahrzeug_clicked();
        void on_buttonEinzelAnzeigeFahrzeug_clicked();
        void on_buttonNeuerEintragFahrzeug_clicked();
        void on_buttonAusleihe_clicked();
        void on_buttonRueckgabe_clicked();
        void on_buttonReservierung_clicked();
    };
    
    
    #endif // MAINWINDOW_H
    
    Methode von der Klasse KundeEinzel
    
    
    void KundeEinzel::check()
    
    J 1 Reply Last reply 15 Oct 2021, 14:03
    0
    • M M.W43
      15 Oct 2021, 13:01

      Ich möchte aus der Klasse MainWindow eine Mthode aufrufen, allerdings befindet sich die Methode in einer anderen Klasse KundeEinzel.
      Rufe ich jetzt die Methode auf, indem ein Objekt in der Klasse MainWindow ein Objekt der Klasse KundeEinzel erzeuge, und dann diese Methode aufrufe?

      Klasse MainWindos

      #ifndef MAINWINDOW_H
      #define MAINWINDOW_H
      
      #include <QMainWindow>
      //für die SQL-Klassen
      //außerdem muss in der Projektdatei der Eintrag sql hinzugefügt werden
      #include <QtSql>
      
      QT_BEGIN_NAMESPACE
      namespace Ui { class MainWindow; }
      QT_END_NAMESPACE
      
      class MainWindow : public QMainWindow
      {
          Q_OBJECT
      
      public:
          MainWindow(QWidget *parent = nullptr);
          ~MainWindow();
          //stellt die Verbindung zur Datenbank her
          bool dbVerbinden();
          void check();               // benötige Methode
      
      private:
          Ui::MainWindow *ui;
          //steht die Verbindung zur Datenbank?
          bool dbVerbunden;
          //für die Datenbank
          QSqlDatabase datenbank;
      
      //die überschriebene Methode beim Schließen des Fensters
      protected:
          void closeEvent(QCloseEvent *event);
      
      private slots:
          //die Slots
          //sie nutzen den AutoConnect-Mechanismus
          void on_buttonListenAnzeigeKunde_clicked();
          void on_buttonEinzelAnzeigeKunde_clicked();
          void on_buttonNeuerEintragKunde_clicked();
          void on_buttonListenAnzeigeFahrzeug_clicked();
          void on_buttonEinzelAnzeigeFahrzeug_clicked();
          void on_buttonNeuerEintragFahrzeug_clicked();
          void on_buttonAusleihe_clicked();
          void on_buttonRueckgabe_clicked();
          void on_buttonReservierung_clicked();
      };
      
      
      #endif // MAINWINDOW_H
      
      Methode von der Klasse KundeEinzel
      
      
      void KundeEinzel::check()
      
      J Offline
      J Offline
      J.Hilk
      Moderators
      wrote on 15 Oct 2021, 14:03 last edited by J.Hilk
      #2

      @M-W43 da check teil der KundeEinzel Klasse und nicht statisch ist, brauchst du eine Instanz von KundeEinzel, um die Funktion auszuführen.

      Kein Weg drum rum.


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      1
      • M Offline
        M Offline
        M.W43
        wrote on 15 Oct 2021, 18:49 last edited by
        #3

        Ich habe es so gelöst, scheint zu funktionieren.

        KundeEinzel *check = new KundeEinzel();
        check->check();
        
        1 Reply Last reply
        0
        • A Offline
          A Offline
          AxelVienna
          wrote on 16 Oct 2021, 07:31 last edited by
          #4

          Wenn Du das Objekt mit new erzeugst, musst Du es hinterher mit delete wieder löschen:

          KundeEinzel *check = new KundeEinzel();
          check->check();
          delete check;
          

          Wenn Du es nur lokal für die eine Methode brauchst, ist der Stack die bessere Option, wo Du Dich ums Löschen nicht zu kümmern brauchst:

          KundeEinzel check();
          check.check();
          

          C++ and Python walk into a bar. C++ reuses the first glass.

          1 Reply Last reply
          1
          • M Offline
            M Offline
            M.W43
            wrote on 16 Oct 2021, 12:03 last edited by
            #5

            Ich brauche es nur lokal für eine Methode, habe deinen zweiten Vorschlag eingebunden.

            Danke euch (macht Spaß hier).

            J 1 Reply Last reply 17 Oct 2021, 07:27
            0
            • M M.W43
              16 Oct 2021, 12:03

              Ich brauche es nur lokal für eine Methode, habe deinen zweiten Vorschlag eingebunden.

              Danke euch (macht Spaß hier).

              J Offline
              J Offline
              J.Hilk
              Moderators
              wrote on 17 Oct 2021, 07:27 last edited by
              #6

              @M-W43 Nur um sicher zugehen,

              dir ist bewusst, dass wenn du irgendwelche Klassenvariablen in check veränderst, veränderst du dies nur hier für die eine Instanz. Alle andere Instanzen von KundeEinzel, die wo anders in deinem code leben, sind davon unbeeinflusst.


              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              1 Reply Last reply
              1

              5/6

              16 Oct 2021, 12:03

              • Login

              • Login or register to search.
              5 out of 6
              • First post
                5/6
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • Users
              • Groups
              • Search
              • Get Qt Extensions
              • Unsolved