2017-07-07 2 views
0

J'essaie d'utiliser le clavier virtuel qt sur un pi de framboise et j'ai des problèmes d'invocation du clavier.qt clavier virtuel ne s'affiche pas

J'ai configuré le projet comme suit pour permettre l'utilisation du clavier virtuel:

//In the PRO file 
QT += qml quick quickcontrols2 xml 
static { 
    QT += svg 
    QTPLUGIN += qtvirtualkeyboardplugin 
} 

CONFIG += c++11 disable-desktop 

Je pense que le disable-desktop devrait être suffisant pour appeler le clavier virtuel, au moins c'est mon hypothèse.

La première ligne dans mon dossier main est:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 

Cela garantit que le module est chargé. J'ai vérifié que sans cette ligne, le programme barfs avec le module de clavier virtuel n'a pas trouvé d'erreur.

Maintenant, j'ai un composant simple qui a un champ de texte:

import QtQuick 2.0 
import QtQuick.Layouts 1.3 
import QtQuick.Controls 2.1 
import QtQuick.VirtualKeyboard 2.1 

TextField { 
      id: idField 
      width: 80 
      height: 30 
      placeholderText: qsTr("ID") 
      Layout.maximumHeight: 30 
      Layout.minimumHeight: 30 
      Layout.minimumWidth: 80 
      Layout.maximumWidth: 80 
      focus: true 
      anchors.horizontalCenter: parent.horizontalCenter 
      inputMethodHints: Qt.ImhDigitsOnly 
     } 

Quand je clique dessus, le clavier ne se présente pas. Je me demande s'il y a une configuration supplémentaire que j'ai besoin de faire pour invoquer le clavier?

Répondre

3

disable-desktop devrait être adopté comme argument pour qmake avant de construire Qt clavier virtuel, pas l'application qui utilise le clavier:

qmake CONFIG+=disable-desktop qtvirtualkeyboard.pro 

Cependant, je pense que this code s'occuperaient automatiquement pour les périphériques embarqués (ce qui signifie que un Qt pré-construit/emballé devrait fonctionner).

Lorsque vous utilisez disable-desktop, il est à vous de fournir le InputPanel:

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.VirtualKeyboard 2.0 

ApplicationWindow { 
    id: window 
    visible: true 
    width: 640 
    height: 480 

    TextField { 
     anchors.centerIn: parent 
    } 

    InputPanel { 
     id: inputPanel 
     z: 89 
     y: active ? parent.height - height : parent.height 
     anchors.left: parent.left 
     anchors.right: parent.right 
    } 
} 

Il y a un exemple plus avancé de ce here. This partie de la documentation mentionne, et le chapitre suivant a aussi un exemple:

Dans la méthode d'intégration d'application, l'application est nécessaire pour créer une instance de InputPanel comme expliqué dans le chapitre suivant.

+0

J'ai essayé les exemples qt sur le même périphérique avec le clavier virtuel et ils semblent fonctionner, donc clairement le clavier est construit correctement. –

+1

J'ai oublié une chose assez importante ..: D – Mitch

+0

Yup, c'était tout. J'ai complètement manqué que le InputPanel doit être fourni. –