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"

                }

            }

        }
    }
  ]
}

Context Invokable: 日付 Date(...)

Date オブジェクトは、日付と時刻を操作するために使用されます。Date オブジェクトは new Date() コンストラクターで作成されます。日付を開始するには 4 つの方法があります: new Date() // 現在の日時 (または) new Date(milliseconds) // 1970/01/01 からのミリ秒 (または) new Date(dateString) (または) new Date(年、月、日、時、分、秒、ミリ秒)

呼び出し可能: number setSeconds(数値秒)

日付オブジェクトの秒を設定します。

4

2 に答える 2

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 に答える
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 に答える