2008-11-21 10 views

Antwort

4

Sie haben Recht, dies sollte offensichtlich eine veröffentlichte API sein und es sollte in der Dokumentation hervorgehoben werden. Kein solches Glück.

  • Wenn Sie eines der nativen Plattformsteuerelemente verwenden, wird die virtuelle Tastatur automatisch eingeblendet, wenn der Benutzer auf ein Steuerelement zum Bearbeiten von Text zugreift.

  • Wenn Sie ein benutzerdefiniertes Steuerelement erstellen, müssen Sie mit seiner Auswahl umgehen, indem Sie Ihre eigene Version der virtuellen Tastatur hinzufügen: machen Sie eine neue Textbearbeitung, window-besitzende virtuelle Tastatur mit benutzerdefinierten Look-Alike-Steuerelement Tasten. Verwende es für alle deine Anwendungen. Eines Tages wird Nokia erkennen, dass sie einen offensichtlichen Fehler gemacht haben und die API öffentlich verfügbar machen.

  • Wenn Sie direkten Bildschirmzugriff verwenden, würden Sie nicht wirklich erwarten, dass die sehr s60 wirkende virtuelle Tastatur aus dem Nichts heraus erscheint. Zeichnen Sie wieder ein schönes Bild auf dem Bildschirm, um den Benutzer wissen zu lassen, wo sich die virtuellen Tasten befinden, und auf Zeigerereignisse zu reagieren. Dies wird weniger wiederverwendbar sein, es sei denn, Sie bauen eine gute Menge an Anpassungen (Hintergrund, Schaltflächenränder ...) hinein.

  • EDIT: Nokia kann sich auf Qt verlassen, um dieses Problem zu beheben. Ich würde erwarten, dass das Steuerelement Teil der aktuellen Version 4.7 von Qt ist.

    3

    Tüfteln mit Schwerpunkt auf einem QLineEdit in benutzerdefinierten codierten kinetischen Scroll-Bereich, hatte ich ein ähnliches Problem (wie man virtuelle Tastatur manuell öffnen). Dann fand ich es, dies offensichtlich in Qt 4.6.3 auf einem C7 Symbian^3 Telefon funktioniert:

    // lineEdit is an instance of QLineEdit  
    QApplication::postEvent(lineEdit, new QEvent(QEvent::RequestSoftwareInputPanel)); 
    

    Davor hatte ich auch zu gleichen LineEdit ein QEvent :: focusIn Ereignis zu schreiben, sonst wird die QLineEdit hat den Inhalt von der virtuellen Tastatur nicht aktualisiert.

    Hoffe, das ist hilfreich. Ich habe Stunden verloren.

    1

    Danke tihi, sehr nützlicher Tipp! Es gibt auch das Ereignis "close virtual keyboard", das ausgelöst werden kann:

    QApplication::postEvent(lineEdit, new QEvent(QEvent::CloseSoftwareInputPanel));