[Gelöst] Vererbung
Verfasst: 26. Juli 2015 21:48
Moin,
ich habe mir einen Button erstell, der mir die ID des Buttons ausgibt, der geklickt wird. Ich habe das mit Hilfe eines Buches gemacht. Dazu hätte ich 2-3 kurze Fragen:
idbutton.h
idbutton.cpp
Das mit den Signalen und Slots habe ich verstanden.
Allerdings verstehe ich nicht ganz was "m_id(id) " und m_id(nextId++) macht. Und warum habe ich zwei Konstruktoren? Static Varibalen gelten für alle Instanzen einer Klasse oder?
Nun möchte ich einen weiteren Button erstellen der diese Funktion, dass man gucken kann welcher Button gedrückt wurde, erben soll. Wie mache ich das? Ich habe es so probiert:
symbolbutton.h
symbolbutton.cpp
Ich habe hier versucht die Konstruktoren der Basisklassen richtig aufzurufen, aber ich denke das es falsch ist.
Ich würde mich sehr freuen, wenn sich jemand 5 min nimmt und mir einmal erklärt was ich hier beachten muss.
Liebe Grüße
ich habe mir einen Button erstell, der mir die ID des Buttons ausgibt, der geklickt wird. Ich habe das mit Hilfe eines Buches gemacht. Dazu hätte ich 2-3 kurze Fragen:
idbutton.h
Code: Alles auswählen
#ifndef IDBUTTON
#define IDBUTTON
#include <QString>
#include <QWidget>
#include <QPushButton>
class IdButton : public QPushButton{
Q_OBJECT
public:
IdButton(const QString& text, int id, QWidget* parent= NULL);
IdButton(const QString& text, QWidget* parent= NULL);
private:
static int nextId;
int m_id;
public slots:
void click();
signals:
void clicked(int id);
};
Code: Alles auswählen
#include "../header/idbutton.h"
int IdButton::nextId = 0;
IdButton::IdButton(const QString& text, int id, QWidget *parent) : QPushButton(text, parent), m_id(id){
connect(this,SIGNAL(clicked()),this,SLOT(click()));
}
IdButton::IdButton(const QString& text, QWidget *parent) : QPushButton(text,parent), m_id(nextId++){
connect(this,SIGNAL(clicked()),this,SLOT(click()));
}
void IdButton::click(){
emit clicked(m_id);
}
Allerdings verstehe ich nicht ganz was "m_id(id) " und m_id(nextId++) macht. Und warum habe ich zwei Konstruktoren? Static Varibalen gelten für alle Instanzen einer Klasse oder?
Nun möchte ich einen weiteren Button erstellen der diese Funktion, dass man gucken kann welcher Button gedrückt wurde, erben soll. Wie mache ich das? Ich habe es so probiert:
symbolbutton.h
Code: Alles auswählen
#ifndef SYMBOLBUTTON
#define SYMBOLBUTTON
#
#include "idbutton.h"
class SymbolButton : public IdButton{
Q_OBJECT
public:
SymbolButton(const QString& text, int id, QWidget* parent= NULL);
SymbolButton(const QString& text, QWidget* parent= NULL);
private:
static int nextId;
int m_id;
}
#endif // SYMBOLBUTTON
Code: Alles auswählen
#include "../header/symbolbutton.h"
int SymbolButton :: nextId=0;
SymbolButton::SymbolButton(const QString &text, int id, QWidget *parent) : IdButton(text, id, parent),QPushButton(text, parent),m_id(id){
}
SymbolButton::SymbolButton(const QString &text, QWidget *parent) : IdButton( text,parent), QPushButton(text, parent), m_id(nextid++){
}
Ich würde mich sehr freuen, wenn sich jemand 5 min nimmt und mir einmal erklärt was ich hier beachten muss.
Liebe Grüße