c++中发送一个信号qml怎么接收和处理信号
1个回答
推荐于2016-01-22
展开全部
非常实用、在程序里面经常需要用到。要想在QML中使用定时器、首先你得在程序的.cpp文件中加上一句qmlRegisterType<QTimer>(“timer”, 1, 0, “Timer”),这句是为了注册这个类,因为Cascades/QML本身是没有这个类的; 然后在QML文件包含它import timer 1.0好了。这些准备工作完成之后你就可以使用Qt的定时器了。 attachedObjects: [
Timer { id: mytimer interval: 500 onTimeout: { console.log("the time is out") } }]mytimer.start() 开启定时器mytimer.stop() 关闭定时器 更多的信息请大家查阅官方API。
在onTimeout这个信号里面你可以写自己需要的功能代码、interval则是定时器完成一次计时的时间、单位是毫秒。下面写一个简单的例子大家感受下计时器的具体用法。
import timer 1.0//将注册好的timer包含进来Page { property bool isOnclicked: false property bool isChanged: false attachedObjects: [ Timer { id: mytimer interval: 500//一次定时器的时间、单位为毫秒 onTimeout: { isChanged = ! isChanged if (isChanged) cont.background = Color.Green; else cont.background = Color.Red//开启定时器后背景色红绿交替变换。 } } ] Container { id: cont preferredHeight: 1280 preferredWidth: 768 background: Color.Red layout: DockLayout { } Button { id: btn verticalAlignment: VerticalAlignment.Center horizontalAlignment: HorizontalAlignment.Center text: “ON/OFF” onClicked: { isOnclicked = ! isOnclicked if (isOnclicked) mytimer.start();//启动定时器 else mytimer.stop()//停止定时器 } } }}
Timer { id: mytimer interval: 500 onTimeout: { console.log("the time is out") } }]mytimer.start() 开启定时器mytimer.stop() 关闭定时器 更多的信息请大家查阅官方API。
在onTimeout这个信号里面你可以写自己需要的功能代码、interval则是定时器完成一次计时的时间、单位是毫秒。下面写一个简单的例子大家感受下计时器的具体用法。
import timer 1.0//将注册好的timer包含进来Page { property bool isOnclicked: false property bool isChanged: false attachedObjects: [ Timer { id: mytimer interval: 500//一次定时器的时间、单位为毫秒 onTimeout: { isChanged = ! isChanged if (isChanged) cont.background = Color.Green; else cont.background = Color.Red//开启定时器后背景色红绿交替变换。 } } ] Container { id: cont preferredHeight: 1280 preferredWidth: 768 background: Color.Red layout: DockLayout { } Button { id: btn verticalAlignment: VerticalAlignment.Center horizontalAlignment: HorizontalAlignment.Center text: “ON/OFF” onClicked: { isOnclicked = ! isOnclicked if (isOnclicked) mytimer.start();//启动定时器 else mytimer.stop()//停止定时器 } } }}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询