0

好吧,这里我有一个屏幕,我想在 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"

                }

            }

        }
    }
  ]
}

上下文可调用:Date Date(...)

Date 对象用于处理日期和时间。Date 对象是使用 new Date() 构造函数创建的。初始化日期有四种方式: new Date() // 当前日期和时间(或) new Date(milliseconds) // 自 1970/01/01 以来的毫秒数(或) new Date(dateString) (或) new Date(年、月、日、时、分、秒、毫秒)

可调用:number setSeconds(number sec)

设置日期对象的秒数。

4

2 回答 2

0

这是定时器的示例代码。

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");
于 2013-10-05T07:17:53.880 回答
0

它将在几秒钟内使用大量进程。但是 QML 中没有 setInterval。最好的解决方案是使用带有 QTimer 的 C++ 类 TimeManager.cpp:

要将 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();
}
于 2013-10-04T13:41:36.130 回答