[QT] Widget Function von anderer Klasse aufrufen



  • Hi

    Habe zwei Klassen eine heist beispiel.h eins.

    class beispiel: public QWidget
    {
     public:
       beispiel();
       ~beispiel();
       QToolButton* button;
    };
    

    Im Konstrukter erstelle ich ich den Button.

    Jetzt habe ich noch eine zweite Klasse die change.h heisst.

    class change: public QWidget
    {
    public:
      change();
      ~change();
      void button_change();
    };
    

    Jetzt will ich das ich wenn die Funktion button_change aufrufe das der Button Text geändert wird. Wie kann ich jetzt die Funktion setText() vom Widget button aufrufen aus der Klasse change ? Ich hoffe ihr wisst wie ich das meine. 🙄

    Gruss
    reilly



  • z.b.

    class beispiel: public QWidget
    {
     public:
       beispiel();
       ~beispiel();
       QToolButton* button;
    };
    
    class change: public QWidget
    {
    public:
      change(beispiel* pBeispiel):mBeispiel(pBeispiel){}
      ~change();
      void button_change(){assert(mBeispiel!=0); mBeispiel->button->setText();}
      beispiel* mBeispiel;
    };
    


  • Danke für deine Antwort aber kannst du mir diese Zeile bitte erkären

    change(beispiel* pBeispiel):mBeispiel(pBeispiel){}
    

    was wird denn da gemacht ? was soll den mBeispiel und pBeispiel sein.
    Inmoment sieht mein Konstrukor eigentlich so aus.

    change(QWidget* parent=0, const char* name=0);
    

    Gruss
    reilly



  • change(beispiel* pBeispiel):mBeispiel(pBeispiel){}
    

    dem konstruktor wird ein zeiger auf eine instanz von beispiel übergeben
    dann wird die membervariable mBeispiel mit pBeispiel initialisiert

    change(beispiel* pBeispiel):mBeispiel(pBeispiel)
    {
    
    }
    
    is das gleiche wie
    
    change(beispiel* pBeispiel)
    {
      mBeispiel=pBeispiel;
    }
    

    du kannst es auch so schreiben

    change(QWidget* parent, const char* name=0):
    mBeispiel((beispiel*)parent)
    {
    
    }
    

    vorausgesetzt beispiel is immer parent von change


Anmelden zum Antworten