Triviales Vererbungsproblem, QPuschButton => ToolBarButto

Alles rund um die Programmierung mit Qt
Antworten
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Triviales Vererbungsproblem, QPuschButton => ToolBarButto

Beitrag von loh.tar »

Hallo Forum!

Ich trau mich fast nicht zu fragen so trivial erscheint mir das Problem, und doch bin ich am verzweifeln...als C++ Neuling.

Ich möchte eine eigene QPuschButton Klasse erzeugen und die ToolBarButton nennen.

Als einzig neue "Eigenschaft" soll der bei jeder Erzeugung seine max/min Breite/Höhe festlegen. Momentan sieht das so aus:

ToolBarButton.h

Code: Alles auswählen

#include <qpushbutton.h>
class ToolBarButton : public QPushButton
{
  Q_OBJECT
  public:
    ToolBarButton (QWidget * , const char * );
   ~ToolBarButton ();:
};
ToolBarButton.cpp

Code: Alles auswählen

#include "ToolBarButton.h"
ToolBarButton::ToolBarButton (QWidget * parent, const char * name = 0) : QPushButton (parent, name)
{
 const int wert  = 25;
  setMaximumWidth(wert);
  setMinimumWidth(wert);
  setMaximumHeight(wert);
  setMinimumHeight(wert);

}

ToolBarButton::~ToolBarButton () {  }
MeinProg.cpp

Code: Alles auswählen

#include "ToolBarButton.h"
...
 ToolBarButton *button = new ToolBarButton(this);
...
button = new ToolBarButton(this);
...
button = new ToolBarButton(this);
...
usw
Der Compiler bricht "immer" mit einer Fehlermeldung wie dieser ab

Code: Alles auswählen

error: no matching function for call to...
candidates are: ToolBarButton::ToolBarButton(QWidget*, const char*)
../lib/ToolBarButton.h:34: note:                 ToolBarButton::ToolBarButton(const ToolBarButton&)
Ich bin mir sicher euch ist klar wieso...mir leider nicht ganz :(
Die Deklaration/Vererbung ist offensichtlich falsch.

Wenn mir einer nen Link empfehlen könnt wo idiotensicher erklärt wird wie man allgemein eine Unterklasse erzeugt wär ich auch schon dankbar. Alles was ich bisher gefunden hab half leider nicht.

Danke schonmal fürs lesen
Lothar
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ist 'this' auch ein QWidget?
Ausserdem fehlt der 'const char*' - Parameter. Da Du ihn bestimmt optional haben möchtest, würde ich

Code: Alles auswählen

class ToolBarButton : public QPushButton
{
  Q_OBJECT
  public:
    ToolBarButton (QWidget *parent, const char *name=NULL);
   ~ToolBarButton ();
};
bevorzugen.
-> Du hast den Default-Parameter also an die falsche Stelle geschrieben - er muss in die Deklaration.

Ist der Doppelpunkt hinter dem Destruktor gewollt?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Beitrag von loh.tar »

Christian...fühl dich geknuddelt :-)

Ein weiterer Hinweis darauf dass ich im umkehrschluss auch den Defaultparameter in der Implementierung löschen muß, hätte es mir noch erleichtert, aber ich bin zum glück drauf gekommen. => es klappt :D

Der Doppelpunkt hat sich nur hier im Posting rein geschlichen.

Was "this" angeht..tja, also..ähm...da es erstmal funktioniert offenbar ja.
Aber ich weiß nicht ob das immer so sein wird. Das Projekt ist recht umfangreich. Wie kann ich denn erreichen dass der neue ToolBarButton genauso flexibel ist wie der originale QPushButton?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

loh.tar hat geschrieben:Christian...fühl dich geknuddelt :-)

Ein weiterer Hinweis darauf dass ich im umkehrschluss auch den Defaultparameter in der Implementierung löschen muß, hätte es mir noch erleichtert, aber ich bin zum glück drauf gekommen. => es klappt :D
Ich gebe immer nur Hinweise und verrate nie alles - nehmen mir zwar einige hier ab und zu übel, aber selber denken ist angesagt :)
loh.tar hat geschrieben: Was "this" angeht..tja, also..ähm...da es erstmal funktioniert offenbar ja.
Aber ich weiß nicht ob das immer so sein wird. Das Projekt ist recht umfangreich. Wie kann ich denn erreichen dass der neue ToolBarButton genauso flexibel ist wie der originale QPushButton?
Es muss ja nicht immer 'this' sein - es sollte immer das parent-Widget sein. Der Rest ergibt sich dann von allein - und falls es mal kein QWidget ist, sagt es Dir der Compiler schon.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Beitrag von loh.tar »

:? mit dem selber denken ist das sone Sache...
Als Anfänger verzweifelt man oft an den simpelsten Dingen weil einfach alles so verwirrend ist. Die offiziellen Dokumentationen sind mit unverständlichen Optionen voll gestopft. Klar wenn man fit ist sind die hilfreich, aber als Ahnungsloser sieht man den Wald vor lauter Bäumen nicht.
Es muss ja nicht immer 'this' sein - es sollte immer das parent-Widget sein. Der Rest ergibt sich dann von allein - und falls es mal kein QWidget ist, sagt es Dir der Compiler schon.
Äh?...das befürchte ich

Nu denn, wenn es soweit ist darf ich hoffentlich nochmal fragen.

Danke nochmal und schönes Wochenende
:-)
Antworten