永发信息网

在QML语言中怎么定义signal并怎么正确使用

答案:1  悬赏:70  手机版
解决时间 2021-11-07 22:56
在QML语言中怎么定义signal并怎么正确使用
最佳答案
三种方法。一种是直接把信号的第一个字母变为大写, 并同时在前面加上"on“。第二种方法使用”Connections"来实现槽的连接。第三种方法,我们可以直接 把信号连接到一个JS的函数上。运行程序,我们可以在应用的输出窗口看到如下的输出:
[cpp] view plain copy
green light is on
yellow light is on
red light is on
red light is on
yellow light is on
green light is on
yellow light is on
red light is on
red light is on
yellow light is on
事实上所有的控件的property都可以发出一个信号。让我们来看一下我们先前完成的“color” property。
[cpp] view plain copy
void TrafficLight::setColor(const QColor &color)
{
if ( color == m_color )
return;
else {
m_color = color;
update(); // repaint with the new color
emit colorChanged();
}
}
从这里可以看出,每当property的值发生改变时,就会发生一个叫做“colorChanged”的信号。我们可以在我们的QML中截获这个信号。比如在我们的代码中,我们可以使用如下的代码:
[cpp] view plain copy
TrafficLight{
id: redlight
width: background.size
height: background.size
color:"red"
onColorChanged: {
console.log("Color is changed to " + color);
}
}
当我们运行时,我们可以看到好多的颜色变化的事件。这是由于颜色在transition时发生很多的颜色的变化。同样我们也可以对任何一个property进行事件的捕获。比如:
[cpp] view plain copy
TrafficLight{
id: redlight
width: background.size
height: background.size
color:"red"
onColorChanged: {
console.log("Color is changed to " + color);
}
onWidthChanged: {
console.log("width is changed to " + width);
}
}
这段代码可以对"width"的变化进行捕获!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
c语言问题 我写的是求方差的程序 为什么求不
关于windows系统直装的那些问题!
忻博文澳洲集资几亿重组安博集团?
企业能否采购成品汽油给员工发福利?
紫南网络会所地址在什么地方,我要处理点事!
c语言,如图,我打波浪线的符号要怎么用?是
四川蓬山离成都多远
log2+log3等于多少
6*6的角钢一米有多重
使用电烤箱应该注意些什么问题呢?
我用斯蒂卡纳米碳王,正手近台快攻多,反手正
求《世界文学名著 安妮日记 安妮·弗兰克》(T
“我永远爱你们”的英文怎么写?
为什么我一年瘦了20多斤,最近几个月瘦得
我前年买的钻戒花了一万一千块钱现在可以当多
推荐资讯
石头把件怎么把玩?玩法?
求值:lg5?lg50-lg2?lg20-lg625=______
nico歌手与V家有什么关系?
gtx680与gt750m怎么样
如图所示的六架战机以相同的速度列队飞行。此
水蛭 谁 认识? 冬天 它 干嘛去了? 怎样弄死
我是一个男生,最近我爸妈因为工作原因,总是
为什么个个餐厅同一个菜有差异价格,差两三块
石坡邮政支局地址在什么地方,想过去办事
地铁旁 钻孔桩施工对地铁有影响吗
哪里有鞋柜卖,实惠点的,家具城里面太贵了。
垫江八中中考成绩
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?