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.