Hallo,
ich bin blutiger C++/Qt Anfänger und versuche heute schon sehr lange folgendes Problem zu lösen:
class1{
connect(pbSettingOpen, SIGNAL(clicked()), SLOT(slotLoad()));
}
ich würd gerne bei Klick anstelle der Funktion slotLoad eine Funktion aus einer anderen Klasse aufrufen.
Mein Ansatz dazu war:
connect(pbSettingOpen, SIGNAL(clicked()), SLOT(class2::slotLoadNew()));
Allerdings bekomme ich zur Laufzeit immer folgenden Fehler:
Object::connect: No such slot class1::class2::slotLoad()
Was mache ich falsch?
Vielen Dank für eure Hilfe!
Slot and Signal
Eigentlich machst du alles falsch. Solltest erstmal die Doku zu connect lesen.
connect(objekt, SIGNAL(ichBinEinSignalVonObjekt()), object, SLOT(ichBinEinSlotVonObject()));
du kannst in einer Klasse statt objekt auch "this" benutzen.
http://doc.trolltech.com/4.7/qobject.html#connect-2
Außerdem wirst du so eh nicht weiter kommen, da du für das connect auch die Instanz von deinem Objekt brauchst. Du kannst nicht einfach auf alle objekte von diesem Typ connecten.
connect(objekt, SIGNAL(ichBinEinSignalVonObjekt()), object, SLOT(ichBinEinSlotVonObject()));
du kannst in einer Klasse statt objekt auch "this" benutzen.
http://doc.trolltech.com/4.7/qobject.html#connect-2
Außerdem wirst du so eh nicht weiter kommen, da du für das connect auch die Instanz von deinem Objekt brauchst. Du kannst nicht einfach auf alle objekte von diesem Typ connecten.
Erstmal danke 
Ist es denn generell überhaupt möglich, als receiver ein Objekt einer anderen Klasse zu verwenden?
Denn auch wenn ich folgendermaßen mache, bekomme ich ein Fehler:
class1::class1(...)
{
...
connect(pbSettingOpen, SIGNAL(clicked()), ObjClass2, SLOT(slotLoadNew()));
}
ObjClass2 ist dabei ein Objekt einer anderen Klasse
Ist es denn generell überhaupt möglich, als receiver ein Objekt einer anderen Klasse zu verwenden?
Denn auch wenn ich folgendermaßen mache, bekomme ich ein Fehler:
class1::class1(...)
{
...
connect(pbSettingOpen, SIGNAL(clicked()), ObjClass2, SLOT(slotLoadNew()));
}
ObjClass2 ist dabei ein Objekt einer anderen Klasse
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Code: Alles auswählen
EditSettings::EditSettings(QWidget *parent, const char *name) : QDialog(parent, name, true),
EditSettingsBase()
{
setupUi(this);
setIcon(Pixmap("EditSettings.png"));
updateWidgets();
flight *test = new flight;
connect(pbSettingDgmOpen, SIGNAL(clicked()),test, SLOT(slotDgm2()));
}Code: Alles auswählen
void flight::slotDgm2()
{
QString dgmfilename3 = QFileDialog::getOpenFileName(0,
QString::tr("Open File"),
"/home",
QString::tr("DGM Files (*.dgm);;DGM Files (*.txt)"));
}Ich erhalte zur Laufzeit bei einem Klick auf den Button den folgenden Fehler:
Object::connect: No such slot QObject::flight::slotDgm2() in src/editsettings.cpp:32
Object::connect: (sender name: 'pbSettingDgmOpen')
Zuletzt geändert von wschbr am 6. Dezember 2010 19:08, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: