QCombobox.keyPressEvent() ???

Alles rund um die Programmierung mit Qt
Antworten
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

QCombobox.keyPressEvent() ???

Beitrag von sdaub »

Hallo, wie kann ich in einer QCombobox die Eingabe von Enter abfangen?
Habe es schon so versucht

Code: Alles auswählen

class MyComboBox(QComboBox):
	def keyPressEvent(self, QKeyEvent):
		if QKeyEvent.ascii()==13:
			if self.name() == "qcbText":
				print "Hallo"
			if self.name() == "qcbKonto":	
				print "Konto"
			if self.name() == "qcbKostenstelle":	
				print "Kostenstelle"
Das geht ja auch theoretisch, nur wie kann ich dann jetzt wo z.B. print "Hallo" steht auf ein anderes Element meiner Anwendung zugreifen?

Danke für die Hilfe
Steffen
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also das ist Python, oder?

In C++ machst des einfach über eine Vererbung, das ist am einfachsten damit. Ansonsten KDE hat dafür ein SIGNAL( keyPressed( QKeyEvent & ) )
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Beitrag von sdaub »

Ja ich programmiere mit Python und Qt mit Linux:
Folgendes fuktioniert nicht:

Code: Alles auswählen

QObject.connect(self.qcbText, SIGNAL('keyPressEvent(QKeyEvent &)'),self.goEinAus)
Bekomme dann immer den Fehler : " RuntimeError: Signal has wrong argument types for slot"

Habe es schon auf viele Arten ausprobiert. Mit Python sieht der Code halt immer leicht anders aus wie mit C++, aber man findet halt kaum Beispiele dafür im Netz.

Steffen
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, weiss das qtforum.org nix? Also wenn die nix haben, dann findet man das Problem meistens nirgends mehr.

Ich habe aber leider auch keine Ahnung, kenne mich da mit dem Qt & Py Zeugs ned aus.
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag von pm_Snake »

Hab keine Ahnung von Python und QT, aber musst du nicht bei einem connect den Slot auch mitgeben ;)

Du sagst jetzt das von self.qcbText das SIGNAL keyPressEvent mit self.goEinAus verknüpft werden soll. Aber wie heisst der Slot wo es ankommen soll?

Das nächste ist, dass keyPressEvent() kein signal sondern ein, wie es schon heisst, event ist. Du musst es einfach überschreiben:

void MyComboBox::keyPressEvent( QKeyPressEvent &e )
{
// jetz tkannst du bequem auf e zugreifen und prüfen um welche taste es sich handelt

}

Gruss
pm_Snake
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Beitrag von sdaub »

pm_Snake hat geschrieben:Du musst es einfach überschreiben:

void MyComboBox::keyPressEvent( QKeyPressEvent &e )
{
// jetz tkannst du bequem auf e zugreifen und prüfen um welche taste es sich handelt

}
Das habe ich ja in meinem ersten Beispiel so gemacht, aber wie kann ich dann auf andere Elemente meines Programms zugreifen?

Trotzdem Danke für alle Hilfe bis jetzt.

Steffen
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Heißt was genau?

Jetzt machst du in der Funktion einen emit( QKeyEvent ) und das fängst halt da ab, wo du es brauchst!?
sdaub
Beiträge: 20
Registriert: 24. November 2004 09:31

Beitrag von sdaub »

Hat sich erledigt, habe die Lösung gefunden. Ich überschreibe keyPressEvent, fange das was ich will ab und habe jetzt auch rausgefunden, wie ich auf andere Elemente zugreifen kann.

Also vielen Dank

Steffen
Antworten