Slot funktioniert nicht. Qt 4.1.4

Verschiedenes zu Qt
Antworten
mephistho
Beiträge: 58
Registriert: 14. September 2006 17:47

Slot funktioniert nicht. Qt 4.1.4

Beitrag von mephistho »

Hallo,

teert und federt mich meinetwegen für diesen Thread, aber ich komm nich mehr weiter.

Ich hab mich im Forum schon umgeschaut und u.a. diesen Thread gelesen.

Zudem hab ich natürlich Bekannte konsultiert, die aber auch keine Lösung fanden.

Ich hab mir einen Slot erstellt, um den Inhalt eines QLineEdit auf Knopfdruck auf einem QLabel ausgeben zu lassen.

Er kompiliert alles, aber der Knopfdruck hat keinen Effekt.

Vermutlich ist es irgendein billiger Fehler, an dem ich nur dauernd vorbeiguck.

Es folgen - hoffentlich ausreichende - Codeschnipsel.

Code: Alles auswählen

class MyWidget: public QWidget
{	
	QLabel *status;
		
public:
	MyWidget(QWidget *parent = 0);
	QString hostname;
	QLabel *LTestLabel;
	QLineEdit *LEHostname;
	QLabel *LHostname;
	
private slots:
	void setHostname();

};

Code: Alles auswählen

// LineEdit zur Eingabe des anzupingenden Hosts
	QLineEdit *LEHostname = new QLineEdit(this);
	LEHostname->setGeometry(60, 520, 100, 25);

Code: Alles auswählen

// Button zum Starten des Pings
	QPushButton *BStartPing = new QPushButton("Ping starten", this);
	BStartPing->setGeometry(165, 521, 70, 23);

Code: Alles auswählen

// Testlabel
	LTestLabel = new QLabel(this);
	LTestLabel->setGeometry(305, 520, 70, 25);

Code: Alles auswählen

// connect zur Ausgabe des Hostnamens auf TestLabel
	QObject::connect(LEHostname, SIGNAL(clicked()), this, SLOT(setHostname()));

Code: Alles auswählen

void MyWidget::setHostname()
{
	this->LTestLabel->setText("fhgsfg");
}
Habt ihr ne Idee :?:

Danke im Vorraus.

Gruß,
meph
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Der Macro O_OBJECT wurde nicht mitgeteilt, darauf hin auch keine moc Datei generiert und kompiliert.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

erstens das, und zweitens haben QLineEdits kein clicked()-Signal, soweit ich weiß.

Flachkoepper
mephistho
Beiträge: 58
Registriert: 14. September 2006 17:47

Beitrag von mephistho »

Danke. Vollkommen richtig.

Wir haben zu Testzwecken ein wenig rumgebastelt.

Jetzt sieht es so aus:

Code: Alles auswählen

class MyWidget: public QWidget
{	
	Q_OBJECT
			
public:
	MyWidget(QWidget *parent = 0);
	QString hostname;
	QLabel *LTestLabel;
	QLineEdit *LEHostname;
	QLabel *LHostname;
	QLabel *status;
	
	int start_ping();

signals:
	void matextschreiben(QString);
	
private slots:
	void setHostname();

};

Code: Alles auswählen

// connect zur Ausgabe des Hostnamens auf TestLabel
	connect(this, SIGNAL(matexteschreiben(QString)), LTestLabel, SLOT(setText(QString)));
	connect(BStartPing, SIGNAL(clicked()), this, SLOT(setHostname()));

Code: Alles auswählen

void MyWidget::setHostname()
{
	emit matextschreiben(LEHostname->text());
}
Immerhin hat der Button-Klick jetzt einen Effekt:

Das Programm stürzt ab ;)

Speicherfehler:
Die Anweisung in "0x..." verweist auf Speicher in "0x...". Der Vorgang read konnte nicht auf dem Speicher durchgeführt werden.

Weitere Ideen?


meph
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

mephistho hat geschrieben: Weitere Ideen?
Man nehme einen Debugger und schaue nach... :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
GwarDrazul
Beiträge: 23
Registriert: 5. Juni 2006 18:56

Beitrag von GwarDrazul »

Bin ich nicht in der Lage, die Definition für "BStartPing" zu finden oder stehts nicht drin?

Gruß
Antworten