6

私はQMLとQML信号に不慣れで、自分では解決できないというこのばかげた問題を抱えています。シグナルをトリガーしてonTouch2回実行しているため、アプリがクラッシュする二重応答が生成されます。

これが私のQMLコードです:

//LabelKey.qml

import bb.cascades 1.0

Container {

    property string labelText: "#"
    property real width: 153.3
    property real height: 102.5
    property int labelPosX: 60
    property int labelPosY: 25
    property int labelTextFontWidth: 45
    property string imgSrc: "asset:///images/keyboard_button.png"

    layout: AbsoluteLayout {
    }
    preferredWidth: width
    preferredHeight: height
    objectName: "contTecla"
    id: contTecla
    ImageView {
        objectName: "imgTecla"
        id: imgTecla1
        imageSource: imgSrc
        preferredWidth: width
        preferredHeight: height
        onTouch: {
            textFieldKey.text = textFieldKey.text + labelTecla.text;
        }
    }
    Label {
        objectName: "labelTecla"
        id: labelTecla
        text: labelText
        textStyle {
            color: Color.DarkYellow
            size: labelTextFontWidth
        }
        layoutProperties: AbsoluteLayoutProperties {
            positionX: labelPosX
            positionY: labelPosY
        }
    } 
}

私はこれを持っており、TextFieldそのIDはtextFieldKey上記の投稿を含む別のQMLにあります。主なアイデアは単純で、各キーが上記のコードのコンポーネントであり、これで押されたキーの値を出力する必要があるキーボードTextFieldです。

問題は、私が言ったように、シグナルが2回呼び出され、TextField毎回値の2つの文字でいっぱいになることです。

信号の適切な使用方法などで何かが足りないのかどうかわからないので、助けてください。

ありがとう!

4

2 に答える 2

2

私はそれを理解します。タッチ信号には4つの異なる状態があります。

  • 下:ユーザーが画面に触れたときに発生します。

  • 移動:ユーザーが画面上で指を動かしたときに発生します。

  • 上:ユーザーが指を離したときに発生します。

  • キャンセル:インタラクションがキャンセルされたときに発生します。

それぞれが0から3までの数字で識別されます。

また、タッチ信号がトリガーされると、ダウンとアップの2つの状態が発生します。作業したいものを確認し、onTouch信号内でキャッチする必要があります。

if (event.touchType == numberOfTheTouchState){
}
于 2012-09-27T13:12:37.257 に答える
0

使いたい

ImageView
{
    objectName: "imgTecla"
    id: imgTecla1
    imageSource: imgSrc
    preferredWidth: width
    preferredHeight: height
    onTouch:
    {
        if(event.isDown())
        {
            textFieldKey.text = textFieldKey.text + labelTecla.text;
        }
    }
}

前述のように、これがないと、アップイベントとダウンイベントの両方が発生します

于 2012-11-21T17:29:28.440 に答える