hallo,
es ist ja möglich über einen pointer auf die eigenschaften eines objektes zuzugreifen.
nun hab ich folgendes.
ich hab in klasse 1 ein button, der wiederum bekommt den slot connectdisconnect(). ich übergebe den button an klasse 2 und möchte von da aus den klick in klasse 1 ausführen.
ist so etwas möglich?
danke
Übergabe eines Signals
Übergabe eines Signals
Zuletzt geändert von Linuxguru am 20. Juni 2007 19:42, insgesamt 2-mal geändert.
hallo,
Du könntest von Klasse 2 aus das Signal clicked() des Buttons mit einem eigenen Signal verbinden, welches Du in Klasse 1 verarbeitest.
Aber warum so umständlich? 
MfG RD1978
Du könntest von Klasse 2 aus das Signal clicked() des Buttons mit einem eigenen Signal verbinden, welches Du in Klasse 1 verarbeitest.
Code: Alles auswählen
QObject::connect( button, SIGNAL( clicked() ), this, SIGNAL( meinSignal() ) );MfG RD1978
Re: Übergabe eines Signals
Linuxguru hat geschrieben:hallo,
es ist ja möglich über einen pointer auf die eigenschaften eines objektes zuzugreifen.
nun hab ich folgendes.
ich hab in klasse 1 ein button, der wiederum bekommt den slot connectdisconnect(). ich übergebe den button an klasse 2 und möchte von da aus den klick in klasse 1 ausführen.
ist so etwas möglich?
danke
Mit http://doc.trolltech.com/4.2/qpointer.html kannst du in jeder richtung verbinden... rauf und runter...
Aber meistens macht man es hierarchisch..
eltern->sohn->sub->button(actionxx)
Signale und event oder signale senden geht auch .... viele wege gehen nach Rom...
Code: Alles auswählen
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[]) {
QApplication a( argc, argv );
Form::self()->setWindowTitle("Mein Programm");
Form::self()->show();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}
public:
static Form* self( QWidget* = 0 );
private:
Form( QWidget* = 0 );
static QPointer<Form> _self;
QPointer<Form> Form::_self = 0L;
Form* Form::self( QWidget* parent )
{
if ( !_self )
_self = new Form( parent );
return _self;
}
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
hallo,
würde funktionieren, wenn ich in klasse 2 "button" von klasse 1 aufrufe. das problem, was ich noch habe ist, das meine funktion auch in klasse 1 liegt..
ich bräuchte praktisch an den übergebenen button noch den SLOT Klasse1::meinSignal();, den ich von klasse 2 aus aufrufen kann.
hintergrund ist, das ich in klasse 1 eine ftp verbindung starten kann. jetzt arbeite ich an einem manger der in einem eigenen fenster abgeleitet von QWidget liegt. von daher müsste ich auf das klickereigniss in klasse 1 zugreifen können.
Aber warum so umständlich? Wink
Code: Alles auswählen
QObject::connect( button, SIGNAL( clicked() ), this, SIGNAL( meinSignal() ) );
ich bräuchte praktisch an den übergebenen button noch den SLOT Klasse1::meinSignal();, den ich von klasse 2 aus aufrufen kann.
hintergrund ist, das ich in klasse 1 eine ftp verbindung starten kann. jetzt arbeite ich an einem manger der in einem eigenen fenster abgeleitet von QWidget liegt. von daher müsste ich auf das klickereigniss in klasse 1 zugreifen können.
Irgendwie hast Du das Signal/Slot-Konzept noch nicht verstanden. Du hast ein Button in Klasse1 und die Funktion ist auch in Klasse1, warum dann nicht der connect in Klasse1? Klicken kannst Du dann doch von überall. Du kannst auch zusätzlich noch einen connect von Klasse1 nach Klasse2 oder umgekehrt machen.
Oder ich verstehe dein Problem nicht.
Oder ich verstehe dein Problem nicht.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
hallo @macman,
du hast mein problem perfekt verstanden..
das mit den signal und slot hab ich auch verstanden, nur evtl etwas grundlegendes nicht.
ich weiss nicht, wie ich von klasse 2 nach klasse 1 klicke.
die funktion ist in klasse 1 und der button in klasse 2.
ich kann zwar objekte per pointer an klasse 2 übergeben, aber wie mach ich das mit den funktionen.
beide klassen sind von QWidget abgeleitet.
dank dir für deine hilfe
du hast mein problem perfekt verstanden..
das mit den signal und slot hab ich auch verstanden, nur evtl etwas grundlegendes nicht.
ich weiss nicht, wie ich von klasse 2 nach klasse 1 klicke.
die funktion ist in klasse 1 und der button in klasse 2.
ich kann zwar objekte per pointer an klasse 2 übergeben, aber wie mach ich das mit den funktionen.
beide klassen sind von QWidget abgeleitet.
dank dir für deine hilfe
Linuxguru hat geschrieben:die funktion ist in klasse 1 und der button in klasse 2.
Code: Alles auswählen
connect(Klasse2->button, SIGNAL(clicked()), Klasse1, SLOT(myFunction()));Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.