[SOLVED] Qt Umlaute nicht erkannt

Alles rund um die Programmierung mit Qt
Antworten
MADsCIENTIST

[SOLVED] Qt Umlaute nicht erkannt

Beitrag von MADsCIENTIST »

Hallo liebe Community,

ich habe ein Problem mit der Erkennung von Umlauten in meinem EventFilter!

Die Umlaute äÄ (Qt::Key_Adiaeresis), öÖ (Qt::Key_Odiaeresis) sowie
üÜ (Qt::Key_Udiaeresis) werden nicht erkannt.

Herausgefunden habe ich, dass die Umlaute durch folgende Werte
ansprechbar sind:
äÄ = 228
öÖ = 246
üÜ = 252

Soll ich nun mit eigenen enums arbeiten oder gibts dafür jetzt spezielle enums von Qt?

Bedanke mich für sinnvolle Hilfe schon mal im Vorraus.
Zuletzt geändert von MADsCIENTIST am 29. Dezember 2013 14:10, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Umlaute nicht erkannt

Beitrag von Christian81 »

Ohne Code ... was willst du machen, wo kommen die Umlaute her?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MADsCIENTIST

Re: Qt Umlaute nicht erkannt

Beitrag von MADsCIENTIST »

Wo die Umlaute herkommen?
Also, in meinem EventFilter sollen alle Zahlen- u. Buchstaben-Eingaben eines bestimmten
QWidgets (QLineEdit) erkannt werden.

Code: Alles auswählen

bool eventFilter(QObject *target, QEvent *event)
{
	if(event->type() == QEvent::KeyPress && target == keyInput)
	{
		QKeyEvent *keyEvent = dynamic_cast<QKeyEvent*>(event);
		int key = keyEvent->key();
		if((key >= Qt::Key_0 && key <= Qt::Key_9) || (key >= Qt::Key_A && key <= Qt::Key_Z)
			|| key == Qt::Key_Adiaeresis /*äÄ*/ || key == Qt::Key_Odiaeresis /*öÖ*/
			|| key == Qt::Key_Udiaeresis /*üÜ*/  || (key >= Qt::Key_F1 && key <= Qt::Key_F12))
		{
			// ... do something
			return true;
		}
	}	
	return false;
}
Die in dem Qt-Enumerationstyp angegebenen Werte für die Umlaute sind aber allesamt ungültig, sprich,
stimmen in ihrem Wert nicht mit den tatsächlichen Key-Codes überein.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Qt Umlaute nicht erkannt

Beitrag von Christian81 »

Ok, da würd ich mal einen Qt-Bug zu schreiben.
Allerdings weiß ich nicht was Du mit dieser ganzen Filterei erreichen willst - ein Eventfilter nur für die Validierung des Inputs ist geringfügig übertrieben...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Qt Umlaute nicht erkannt

Beitrag von odt »

Das Key_Adiaeresis entspricht dem grossen Ä. Vermutlich erhälst Du für ä und Ä einen unterschiedlichen Key-Code:
'ä' 228 e4
'Ä' 196 c4
Für das ä scheint kein Qt-Key-Code zu existieren.
Daher kein Qt-Bug. Ich würde eigene Konstanten oder Enums verwenden.
ODT Informatik GmbH, Reto Tschofenig
Antworten