Seite 1 von 1

[SOLVED] Qt Umlaute nicht erkannt

Verfasst: 20. Dezember 2013 18:54
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.

Re: Qt Umlaute nicht erkannt

Verfasst: 20. Dezember 2013 20:21
von Christian81
Ohne Code ... was willst du machen, wo kommen die Umlaute her?

Re: Qt Umlaute nicht erkannt

Verfasst: 20. Dezember 2013 21:34
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.

Re: Qt Umlaute nicht erkannt

Verfasst: 21. Dezember 2013 11:33
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...

Re: Qt Umlaute nicht erkannt

Verfasst: 21. Dezember 2013 14:19
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.