[gelöst] Findet Slot nicht

Alles rund um die Programmierung mit Qt
Antworten
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

[gelöst] Findet Slot nicht

Beitrag von huckleberry »

Hallo Leute,

ich habe ein Gialogfenster gebaut, wo kurz einige Werte abgefragt werden.

Code: Alles auswählen

//....
	// Connect
	connect(btnOK,		SIGNAL(clicked(bool)),		this,		SLOT(this->getData(tPC)));
//....

void DlgADialog::getData(MyController &tMC)
{

//dothis	

	bool ok;
	
	tMC.addNewData(	tID.toInt(&ok, 10),
			tName,
			tCat.toInt(&ok, 10),
			tVal1.toInt(&ok, 10),
			tVal2.toInt(&ok, 10),
			0);
	this->hide();
}
und in der Header:

Code: Alles auswählen

public slots:
	void getData(MyController &tMC);
Zuletzt geändert von huckleberry am 28. Juni 2011 15:05, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und wie soll es funktionieren wenn die Signatur vom Signal und Slot nicht passen?
http://doc.qt.nokia.com/4.7/signalsandslots.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Beitrag von huckleberry »

Christian81 hat geschrieben:...wenn die Signatur vom Signal und Slot nicht passen?
Ok, ich nehme an du meinst:

Code: Alles auswählen

connect(btnOK,      SIGNAL(clicked(bool)),      this,      SLOT(this->getData(tPC))); 
Mein Slot 'getData' erwartet ein 'MyController'-Objekt, welches mein Signal nicht senden wird? Danke für den Hinweis.

Ok, wie kann ich dann mein Problem elegant lösen?
Ich habe ein QHash wo ich verschiedene Werte drauf sichere. Ich wollte mit diesem Dialogfenster einige Werte abfragen (int, QString, int, int, int) und wenn ich dann Ok-Button drücke, sollten die Werte in den QLineEdits einfach in meine QHash gepusht werden.

Geplant war das mit der getData() Methode/Slot, wo ich mein QHash byReference übergebe und dort direkt erweitere.

Elegante Vorschläge sehr willkommen..

Vielen Dank. Gruß Huck
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ungefähr so:

Code: Alles auswählen

Dlg dlg;
if (dlg.exec()==Accepted) {
  saveData=dlg.getData();
}
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Beitrag von huckleberry »

upsala hat geschrieben:Ungefähr so:
Jupp Danke.

(Falls andere an gleichem Problem sitzen):
Damit "Accepted" erkannt nicht vergessen richtig zu connecten.

Code: Alles auswählen

connect(btnOK, SIGNAL(pressed()), this, SLOT(accept()));
Antworten