Qt Android: le clavier virtuel continue de passer en majuscule lorsque je taper un QLineEdit

Lorsque je taper un QLineEdit, le clavier virtuel commence par majuscules. Même si je l'ai mis en minuscule, il retourne en majuscule dès que j'ai tapé un seul caractère. C'est-à-dire, chaque fois que je tape un caractère, le clavier est réinitialisé en majuscules à nouveau.

Cela se produit même sur un projet récemment créé (je viens de mettre une édition de ligne et de l'exécuter).

J'ai trouvé un forum sur le même problème – https://groups.google.com/forum/#!topic/android-qt/QMFZmkACAIA .

J'utilise Qt / C ++ (pas QML).

Edit: Juste testé sur un nouveau projet QML, le bug est là aussi. J'ai également trouvé un sujet de discussion à propos de QML – https://groups.google.com/forum/#!msg/android-qt/BzGDGoLNtYc/TdtOX9MW3vIJ .

Edit 2: J'ai testé avec inputMethodHints (), et le seul qui a eu effet a été ImhNoAutoUmpaces. Mais alors il a encore commencé avec un char majuscule, et en appuyant sur le bouton arrière (pour supprimer le dernier caractère), le clavier passe de nouveau en majuscule, même si vous avez tapé plusieurs lettres. Après la première lettre, il passe en minuscule, et si vous n'appuyez pas sur le bouton Précédent, il fonctionne surtout OK.

  • Réalités de l'utilisation de QT C ++ pour écrire une application de téléphonie multiplate-forme
  • Quelles applications sur Google Play sont construites à l'aide de Qt?
  • Transfert d'appels vidéo Qt mobile
  • Configurez une application Qt5 5.7 pour Android avec CMake
  • Ajout d'une activité SDK dans Qt pour Android
  • QNetworkAccessManager - d'abord GET très lent
  • Comment utiliser la classe Qt Jni "QAndroidJniObject"
  • Q_RETURN_ARG et QQmlComponent - composant non prêt
  • One Solution collect form web for “Qt Android: le clavier virtuel continue de passer en majuscule lorsque je taper un QLineEdit”

    Modifier: une solution de contournement est en ImhNoAutoUppercase définir ImhNoAutoUppercase , la première lettre est encore en majuscule, mais au moins les lettres suivantes que vous tapez seront minuscules.

    Réponse originale: dans Android, cela serait défini en utilisant inputType sur EditText dans le xml du fichier de mise en page pour Activity / Fragment (écran / page que vous regardez). Pouvez-vous accéder et éditer le fichier de mise en page directement pour Android?

    Utilisez-vous setInputMask () pour contrôler le type de saisie? Il se peut que le fait de forcer les minuscules (ou la commutation de la conversion de cas) donne l'option d'utiliser les majuscules ou minuscules. Je suppose que ce qui est défini dans le fichier xml de mise en page Android est inputType = "textCapSentences" ou quelque chose de similaire ( https://developer.android.com/training/keyboard-input/style.html ).

    MISE À JOUR: vous mentionnez que la question est corrigée en 5.4. Cela ressemble au commit qui le réparerait. Je propose de mettre en œuvre les corrections présentées ici. https://qt.gitorious.org/qt/qtbase/commit/2b3f293d892c5268bd2a07ed17fa9fc5adacbd76

    Vous dites que vous êtes heureux de modifier le code source Qt. Je pense que l'erreur peut être dans cette partie de src / org / qtproject / qt5 / android / QtActivityDelegate.java

      if ((inputHints & ImhUppercaseOnly) != 0) { initialCapsMode |= android.text.TextUtils.CAP_MODE_CHARACTERS; inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS; } else if ((inputHints & ImhLowercaseOnly) == 0 && (inputHints & ImhNoAutoUppercase) == 0) { initialCapsMode |= android.text.TextUtils.CAP_MODE_SENTENCES; inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES; } 

    Doit être changé en:

      if ((inputHints & ImhUppercaseOnly) != 0) { initialCapsMode |= android.text.TextUtils.CAP_MODE_CHARACTERS; inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS; } else if ((inputHints & ImhLowercaseOnly) == 0 && (inputHints & ImhNoAutoUppercase) == 0) { //initialCapsMode |= android.text.TextUtils.CAP_MODE_SENTENCES; // not sure what to set here - could try 0 or null if commenting out line doesn't work inputType |= android.text.InputType.TYPE_CLASS_TEXT; } 

    Si cela ne le corrige pas, je suggérerais de rechercher le code source pour android.text.InputType.TYPE_TEXT_FLAG_CAP ou android.text.TextUtils.CAP_MODE et de les remplacer par un essai et une erreur.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.