2016-12-22 2 views
0

Ich habe eine QT-Anwendung mit einem großen Text, und ich möchte ein "Suche" -Feld anzeigen, wenn Benutzer auf die Systemverknüpfung für diese Funktionalität klickt. Aber diese Verknüpfungen hängen von der aktuellen Systemsprache ab. Ich meine zum Beispiel, in Windows + Englisch, Suche = "CRTL + F", aber in Windows + Spanisch, Suche = "CRTL + B".Systemverknüpfung in Abhängigkeit von der Sprache

Wie kann ich dieses Problem lösen und je nach Sprache den guten Shorcut erkennen? Ich möchte meine Box ‚Suchen‘ öffnen, wenn der Benutzer STRG + F drückt (wenn das System ist in englischer Sprache), oder wenn der Benutzer drückt STRG + B (wenn das System ist in Spanisch)

Vielen Dank im Voraus, Diego

Antwort

1
QShortcut* shortcut = new QShortcut(this); 
shortcut->setContext(Qt::ApplicationShortcut); 

QLocale::Language lang = QLocale::system().language(); 

switch (lang) 
{ 
case QLocale::English: 
     shortcut->setKey(QKeySequence(Qt::CTRL + Qt::Key_F)); 
    break; 

case QLocale::Spain: 
     shortcut->setKey(QKeySequence(Qt::CTRL + Qt::Key_B)); 
    break; 

default: 
     // or simply assign platform's standard key binding 
     shortcut->setKey(QKeySequence::Find); 
break; 
} 

connect(shortcut, &QShortcut::activated, this, &MyClass::my_slot); 
+0

Danke für die Antwort. Ich habe vergessen zu sagen (Entschuldigung!), Dass meine Anwendung QML hat, ich verwende QWidgets nicht für GUI. Ich habe versucht: Shortcut { Sequenz: StandardKey.Find Kontext: Qt.ApplicationShortcut OnActivated: console.log ("finden ...") } Aber 'aktiviert' nur mit STRG + F aufgerufen wird (nicht abhängig von der Sprache) – Diego

Verwandte Themen