Qt QML信号执行两次
我是QML和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
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种不同的状态:
- 向下:当用户触摸屏幕时发生
- 移动:当用户在屏幕上移动手指时发生
- 向上:当用户松开手指时发生
- 取消:在取消交互时发生
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){}很好地解决了这个问题。当你解决自己的问题时,要做的事情是写一个正确的答案,然后接受它。这有助于可能有相同问题的人找到解决方案,并解决问题。