我是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
,其中包含我在上面发布的那个。主要思路很简单,就是一个键盘,其中每个键都是上面代码的一个组成部分,它必须打印在TextField
中按下的键的值。
问题是,正如我所说的那样,信号被调用两次,每次用{2}字符填充TextField
。
请帮帮我,我不知道是否可能因使用信号或类似信息而错过了某些内容。
谢谢!
答案 0 :(得分:2)
我明白了。触摸信号有4种不同的状态:
向下:当用户触摸屏幕时发生。
移动:当用户在屏幕上移动手指时发生。
Up:当用户松开手指时发生。
取消:取消互动时发生。
每个人都识别0到3的数字。
当触发触摸信号时,涉及两个状态,Down和Up。你只需要确定你想要使用它并在onTouch信号中捕获它:
if (event.touchType == numberOfTheTouchState){
}
答案 1 :(得分:0)
您想要使用
ImageView
{
objectName: "imgTecla"
id: imgTecla1
imageSource: imgSrc
preferredWidth: width
preferredHeight: height
onTouch:
{
if(event.isDown())
{
textFieldKey.text = textFieldKey.text + labelTecla.text;
}
}
}
如前所述,如果没有这个,你可以同时获得上下事件