Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML信号执行两次_Qt_Qml_Blackberry 10_Qt Signals - Fatal编程技术网

Qt QML信号执行两次

Qt QML信号执行两次,qt,qml,blackberry-10,qt-signals,Qt,Qml,Blackberry 10,Qt Signals,我是QML和QML信号方面的新手,我有一个愚蠢的问题,我自己无法解决。我触发了一个onTouch信号,执行了两次,产生了一个双重响应,使我的应用程序崩溃 以下是我的QML代码: //LabelKey.qml import bb.cascades 1.0 Container { property string labelText: "#" property real width: 153.3 property real height: 102.5 propert

我是QML和QML信号方面的新手,我有一个愚蠢的问题,我自己无法解决。我触发了一个
onTouch
信号,执行了两次,产生了一个双重响应,使我的应用程序崩溃

以下是我的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
        }
    } 
}
我在另一个QML中有一个
TextField
,它的id是
textFieldKey
,其中包括我在上面发布的那个QML。其主要思想很简单,就是一个键盘,其中每个键都是上述代码的组成部分,它必须打印此
TextField
中按下的键的值

问题是,正如我所说,信号被调用了两次,每次用两个字符的值填充
TextField

请帮帮我,我不知道我是否在使用信号的正确方式上遗漏了什么


谢谢

我明白了。触摸信号有4种不同的状态:

  • 向下:当用户触摸屏幕时发生

  • 移动:当用户在屏幕上移动手指时发生

  • 向上:当用户松开手指时发生

  • 取消:在取消交互时发生

每个都用一个从0到3的数字标识

当触控信号被触发时,会涉及两种状态,向下和向上。您只需确定要使用哪一个,并在onTouch信号中捕捉它:

if (event.touchType == numberOfTheTouchState){
}
你想用

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

如前所述,如果没有这一点,您将同时获得上升和下降事件

我会找到答案。触摸信号有4种不同的状态:向下:当用户触摸屏幕时发生。移动:当用户在屏幕上移动手指时发生。向上:当用户松开手指时发生。取消:在取消交互时发生。每个都用一个从0到3的数字标识。当触控信号被触发时,会涉及两种状态,向下和向上。您只需要确定要使用哪一个,并在onTouch信号中捕获它:if(event.touchType==numberOfTheTouchState){}很好地解决了这个问题。当你解决自己的问题时,要做的事情是写一个正确的答案,然后接受它。这有助于可能有相同问题的人找到解决方案,并解决问题。