2017-10-01 6 views
0

in meiner QT-Anwendung für Embedded-Gerät, ich möchte einen Ton auf Tastendruck Ereignis der QML-virtuellen Tastatur spielen. Kann ich dieses Ereignis bekommen? und wie bekomme ich es? ich schon eine Klasse, die (Klick-Effekt) Ton ausgeben, wenn auf eine Schaltfläche geklickt wurde, dass ich in den anderen verwenden QML SeitenWie man die Signaltaste auf der virtuellen QT-Tastatur drückt und eine Sound-Klickspur spielt?

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

Page{ 
    id: pag 
    width: 1280 
    height: 800 
    background: Rectangle { color: "black"} 
    TextField { 
     id: txtName 
     height: 200 
     width:200 
     anchors.horizontalcenter:parent.horizontalCenter 
     font.family: "Arial 
      font.pixelSize: 24 
      placeholderText: "insert your text here" 
      background: Rectangle { 
       anchors.fill: parent 
       color: "transparent" 
      } 
    } 
    InputPanel { 
     id: virtualkeyboard 
     width: 0.95*parent.width 
     anchors.bottom: parent.bottom 
    } 
} 
+0

Siehe [this] (https://doc.qt.io/qt-5/technical-guide.html) Artikel, um weitere Informationen zum Anpassen Ihrer virtuellen Tastatur zu erhalten. – folibis

+0

danke für den link !! – pablodepas87

Antwort

0

Sie eine Klasse Mykeyfilter erstellen können, es ist eine QObject Klasse

dann in der Datei .h Sie erklären:

bool eventFilter(QObject *object, QEvent *event); 

Dann in Ihrem Mykeyfilter.cpp Sie Datei definieren event wie folgt aus:

bool MykeyFilter::eventFilter(QObject *object, QEvent *event) 
{ 
    switch(event->type()) 
    { 
    case QEvent::KeyPress: 
    case QEvent::KeyRelease: 
     { 
     //////call your sound class here that you want to play///// 
     qDebug()<<"I have clicked" //For testing 
     } 
    default: 
     break; 

     //   return QObject::eventFilter(object, event); 
    } 

    return QObject::eventFilter(object, event); 

} 

auch in Ihrer main.cpp-Datei hinzu:

#include "mytouchfilter.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QQmlApplicationEngine engine; 

    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

    app.installEventFilter(new MykeyFilter()); 

    return app.exec(); 
} 
1

Sie haben zwei Möglichkeiten:

  1. Verwenden Sie das clicked() Signal von BaseKey .
  2. Verwenden Sie die soundEffect Eigenschaft von KeyPanel.

Beide erfordern einen eigenen Stil. Sie können mehr über das Erstellen Ihres eigenen Stils lesen here. Um von dort zu zitieren:

Ein guter Ausgangspunkt für die Erstellung eines neuen Stils besteht darin, einen vorhandenen integrierten Stil als Vorlage zu verwenden und ihn zu bearbeiten. Sie finden die integrierten Stile im Quellverzeichnis der virtuellen Tastatur src/virtualkeyboard/content/styles. Kopieren Sie eines der Verzeichnisse mit einem integrierten Stil in das Styles-Verzeichnis und benennen Sie es in "test" um. [...]

+0

danke, gute Idee !!! – pablodepas87

Verwandte Themen