2013-10-04 4 views
0

Eh bien, ici j'ai un écran que je veux fermer après 2-3 secondes. Pour cela j'utilise la méthode setDate(). Je suis très nouveau à cette programmation Blackberry Cascade QML. Je veux joindre 1 écran de démarrage supplémentaire, donc pour cette raison, je veux utiliser la minuterie pour fermer et ouvrir la feuille en fonction des secondes. Toute aide sera appréciée.Utilisez setSeconds(); pour fermer mon écran de démarrage dans blackberry cascade

Merci d'avance.

J'ai travaillé sur le code suivant.

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" 

       } 

      } 

     } 
    } 
    ] 
} 

Contexte invocables: Date Date (...)

L'objet Date est utilisé pour travailler avec les dates et heures. Les objets de date sont créés avec le nouveau constructeur Date(). Il existe quatre façons de lancer une date: new Date() // date et heure actuelles (ou) new Date (millisecondes) // millisecondes depuis 1970/01/01 (ou) new Date (dateString) (ou) nouvelle date (année, mois, jour, heures, minutes, secondes, millisecondes)

invocables: setSeconds de nombre (sec)

Définit les secondes d'un objet date.

Répondre

0

Il utilisera beaucoup de processus pendant quelques secondes. Mais il n'y a pas setInterval dans QML. La meilleure solution utilise une classe C++, TimeManager.cpp avec un QTimer:

Pour exposer le C++ méthode pour QML vous pouvez vous inscrire en tant que ContextProperty lorsque le QML est instancié:

QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this); 
qml->setContextProperty("TimeManager", new TimeManager()); 

Et je raconterai les méthode:

Q_INVOKABLE void callLater(int milliSeconds, QObject* sloter); 

La mise en œuvre:

void TimeManager::callLater(int milliSeconds, QObject* sloter){ 
    QTimer::singleShot(milliSeconds, sloter, SLOT(timerEnd())); 
} 

Et le QML:

onCreationCompleted: { 
    TimeManager.callLater(2500, this); 
} 

onTimerEnd: { 
mysheet1.closed(); 
} 
0

Voici un exemple de code de 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 
       } 
      } 
     ] 
    } 
} 

Ne pas oublié d'ajouter à la ligne ci-dessous main.cpp

qmlRegisterType<QTimer>("my.timer", 1, 0, "QTimer"); 
Questions connexes