Archiv verlassen und diese Seite im Standarddesign anzeigen : QT, eigene Slots in einer Klasse
Linuxexplorer
23-07-2002, 17:51
Hallo
Ich möchte gerne einen eigenen Slot in einer Klasse MyQPushButton definieren.
#include <qpushbutton.h>
#include <qpushbutton.h>
#include <qmessagebox.h>
class MyQPushButton : public QPushButton
{
Q_OBJECT
public slots:
void antwort()
{
QMessageBox::information(0, "Application name","TEST2 QT" );
}
};
Der Compiler meldet mir aber eine Fehler bei der folgenden Codezeile:
MyQPushButton* hello = new MyQPushButton("Beenden durch pressen", test);
MyQPushButton könne nicht 2 Argumente haben!
Wieso geht das nicht ?
MFG: Linuxexplorer
anda_skoa
23-07-2002, 19:30
Das hat nichts mit slots oder Qt zu tun.
Du hast keinen Konstruktor in MyQPushButton definiert, dann existiert nur der Default Konstruktor ohne Argumente und derDefault Copy Konstruktor.
Ciao,
_
Linuxexplorer
24-07-2002, 12:53
Hi
Ja, ist mir im Nachhinein auch Eingefallen.
Gibts es irgend einen Weg, den Konstruktor von QPushButton in meine eigene Klasse MyQPushButton zu übernehmen ? Könnte man ihn irgend wie erben ?
MFG: Linuxexplorer
anda_skoa
24-07-2002, 14:18
Erben geht nicht, wie du ja schon gesehen hast.
Aber leere Konstruktoren zu schreiben ist ja nicht viel Aufwand:
class MyQPushButton : public QPushButton
{
public:
MyPushButton(QWidget* parent, const char* name=0) : QPushButton(parent, name) {};
MyPushButton(const QString& text, QWidget* parent, const char* name=0) : QPushButton(text, parent, name) {};
Ciao,
_
Linuxexplorer
24-07-2002, 17:11
Hi
Vielen Dank für deinen Tipp!
Leider begreife ich deinen Beispielcode nicht ganz.
MyPushButton(QWidget* parent, const char* name=0) : QPushButton(parent, name) {};
So übernimmst du einfach den Konstruktor von QPushButton ? Wie ist denn das mit den Argumenten vom originalen Konstruktor (QPushButton(parent, name)), hast du die einfach ausgewählt ?
MFG: Linuxexplorer
anda_skoa
24-07-2002, 18:22
MyPushButton(QWidget* parent, const char* name=0)
Das deklariert einen Konstrutor mit zwei Argumenten.
Die beiden sind praktisch bei QWidgets immer da, aber ich hab da als Vorlage den ersten Konstruktor von QPushButton aus der Doku genommen.
: QPushButton(parent, name)
Das ist Initialisierungscode. Bedeuten tut es "benutze Konstruktor der Basisklasse QPushButton"
parent und name sind die beiden Argumente von MyPushButton(QWidget* parent, const char* name(.
Sie werden also "weitergeleitet"
{}
Bedeutet, dass weiter nichts gemacht wird. Der Konstruktor hat einen leeren Body.
Alles nach dem Doppelpunkt kann auch im cpp File stehen. Das ist immer dann anzuraten, wenn der Body länger als ein/zwei Zeilen ist.
MyPushButton::MyPushButton(QWidget* p, const char* name) : QPushButton(p, name)
{
}
Im h File stünde dann nur mehr
MyPushButton(QWidget* p, const char* name=0);
Alle Klarheiten erfolgreich beseitigt? ;)
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.