PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SINGLE-SLOT-Verfahren; Zugriff auf Steuerelemente des Hauptfensters in eigenem Slot



BlackScorpion
07-12-2004, 10:30
Hallo!
Zunächst einmal: Ich bewege mich auf neuen Terrain, was qt-Programmierung betrifft.
Ich habe ein simples Programm mit dem ich die Single-Slot-Funktionen lernen will.

Ich möchtemit einem Button (QPushButton) aus zwei Textfeldern (QLineEdit) Werte auslesen, diese berechnen und in einem extra Textfeld den neu berechneten Wert wieder ausgeben. Ich habe mir nun einen eigenen SLOT (mit eigener Klasse) geschrieben und möchte nun irgendwie auf die Textfelder zugreifen aber wie?

Hat jmd mal ein paar Tips oder Ideen??

Danke schonmal!

MfG! BlackScorpion

Boron
07-12-2004, 11:16
// In der Datei wo du den Klick auf den Button abfängst
connect( button, SIGNAL(clicked()), slotObjekt, SLOT(deinSlot(feld1, feld2)) );

// In slotKlasse
SlotKlasse::deinSlot( QLineEdit& line1, QLineEdit& line2)
{
// mach was du willst
// z.B.
line1->setText( "Neuer Text für QLineEdit Nr.1");
line2->setText( "BlackScorpion ist doof ;-)");
}So in etwa?

anda_skoa
07-12-2004, 11:26
Boron das geht so nicht, ein Slot darf nur weniger Parameter haben als das Signal, nicht mehr.

Ich nehme mal an, dass sich alle vier Elemente (die drei Edits und der Button) im selben Widget befinden.
Dann ist es am leichtesten wenn man von dieser Widgetklasse ableitet und dort den Slot implementiert.
Im Slot stehen dann alle Elemente des Widgets ganz normal als Klassenvariablen zur Verfügung, man braucht also nur die entsprechenden Header zu inkludieren und Methoden aufzurufen.

Ciao,
_

Boron
07-12-2004, 12:25
@anda_skoa
Oha, ich habe halt nie Slots mit mehr als einem Paramter verwendet :D.
Wahrscheinlich genau aus dem von dir genannten Grund. Bloß, dass ich das vergessen hatte.

BlackScorpion
07-12-2004, 12:26
Ok, danke erstmal für Antwort!

Und wie leite ich dann von der Widget-Klasse ab? Und ich leite meine eigene Klasse von dieser Widget-Klasse ab und mache da meinen Slot rein?
Kannst du vielleicht mal ein Beispiel geben, wenns keine allzu großen Umstände macht?

Danke!

anda_skoa
08-12-2004, 04:17
http://www.mrunix.de/forums/showthread.php?t=36851
Lektionen 5 und 6

Ciao,
_

BlackScorpion
08-12-2004, 09:08
ok mit den Lektionen hab ich das jetzt hinbekommen, vielen dank!