嗯,这里我有一个屏幕,我希望在2-3秒后关闭。为此我使用setDate()方法。
我对这款Blackberry Cascade QML编程非常陌生。我想再添加1个闪屏,因此我想使用计时器根据秒数关闭并打开工作表。 任何帮助将不胜感激。
提前致谢。
我已经处理了以下代码。
import bb.cascades 1.0
import bb.cascades.pickers 1.0
Page
{
Container
{
background: Color.Transparent
//Todo: fill me with QML
onCreationCompleted:
{
mysheet1.open();
new Date();
**Error is shown in for loop**
for(Date.setSeconds(1),Date.setSeconds()<=5 , Date.setSeconds()+1)
{
if(Date == 5)
{
mysheet1.closed();
mysheet2.open();
}
}
}
attachedObjects:
[
Sheet
{
id: mysheet1
peekEnabled: false
Page
{
Container
{
background: Color.Transparent
ImageView
{
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
imageSource: "asset:///splash1.png"
}
}
}
}
]
}
Context Invokable:日期日期(...)
Date对象用于处理日期和时间。 使用新的Date()构造函数创建日期对象。 有四种方式来启动日期: new Date()//当前日期和时间(或) 新日期(毫秒)//自1970/01/01(或)以来的毫秒 新日期(dateString)(或) 新日期(年,月,日,小时,分钟,秒,毫秒)
Invokable:number setSeconds(number sec)
设置日期对象的秒数。
答案 0 :(得分:0)
它将使用大量的过程几秒钟。但是QML中没有setInterval。 最好的解决方案是使用C ++类,TimeManager.cpp和QTimer:
要将C ++方法暴露给QML,您可以在实例化QML时注册为ContextProperty:
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
qml->setContextProperty("TimeManager", new TimeManager());
并声明方法:
Q_INVOKABLE void callLater(int milliSeconds, QObject* sloter);
实施:
void TimeManager::callLater(int milliSeconds, QObject* sloter){
QTimer::singleShot(milliSeconds, sloter, SLOT(timerEnd()));
}
和QML:
onCreationCompleted: {
TimeManager.callLater(2500, this);
}
onTimerEnd: {
mysheet1.closed();
}
答案 1 :(得分:0)
以下是Timer的示例代码。
import bb.cascades 1.0
import my.timer 1.0
Page {
Container {
layout: DockLayout {
}
onCreationCompleted: {
mTimer.start();
}
ImageView {
id: mImageViewIcon
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
imageSource: "asset:///images/splash.png"
}
attachedObjects: [
QTimer {
id: mTimer
interval: 2000
onTimeout: {
//Push New Page here
}
}
]
}
}
不要忘记在main.cpp中添加以下行
qmlRegisterType<QTimer>("my.timer", 1, 0, "QTimer");