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