2012-12-06 4 views
0

Comment charger une méthode lorsque je clique sur un bouton d'une disposition qml à une autre qml? Comme j'ai un bouton editprofile si je clique sur le bouton signifie que je veux montrer les valeurs, ce que j'ai obtenu à partir du webservice comment faire cela? quelqu'un peut-il envoyer une idée? MerciBlackberry 10 cascades qml méthodes

+2

pouvez-vous être plus précis? Vous n'avez pas compris votre question. –

Répondre

2

vous devez mettre en œuvre cette méthode onCreationCompleted

onCreationCompleted: { 
    // call the function, that you need to show first 
    // first_display() 
    } 

Hope this helps !!!.

1

Si je vous comprends bien, vous voulez effectuer une action lorsque vous cliquez sur un bouton. Pour ce faire, vous pouvez ajouter la méthode onClicked à votre objet Button dans QML. Exemple:

Button { 
    text: "View profile" 
    onClicked: { 
     myProfileInfo.visible = true; 
    } 
} 

Label { 
    id: myProfileInfo 
    text: "This is my profile" 
    visible: false 
} 
2

On dirait que vous essayez de transmettre des données extraites d'un webservice d'une vue QML à l'autre. Un volet de navigation où vous utilisez le createObject() pour créer un écran d'interface utilisateur à partir d'un fichier .qml et pousser le nouvel écran (page) dans la pile de vue du volet de navigation, avec vos données accessibles à l'interface utilisateur de la page nouvellement créée et visible. une description plus concrète je pense, et un moyen commun de le faire. Pour transmettre vos données, déclarez une propriété sur l'objet racine (Page, Conteneur) de votre page QML 'profileview'. Ensuite, dans votre premier fichier QML dans la fonction onClicked() de votre bouton, affectez à la variable le résultat de createObject() dans la définition QML. Vous pouvez ensuite utiliser cette variable pour affecter vos données à la propriété sur la page 'profileview'. Votre bouton ressemblerait à quelque chose comme ceci:

// Assume you have a Navigation Pane called navPane 
// You also have to define a component for your QML file 
Button { 
    text: "View profile" 
    onClicked: { 
    var profilePage = profileDefinition.createObject(); 
    profilePage.myData = webserviceData; 
    navPane.push(profilePage); 
    } 
    attachedObjects: [ 
    ComponentDefinition { 
     id: profileDefinition 
     source: "profilePage.qml" 
    } 
    ] 
} 

Un exemple complet plus détaillé basé sur le projet volet de navigation Cascades échantillon est ci-dessous:

main.qml

// Navigation pane project template 
import bb.cascades 1.0 

NavigationPane { 
id: navPane 

// This property holds and tracks the created profile page 
property Page profilePage 

/* This property holds some sample webservice data, in practice 
* you would load this from the webservice 
*/ 
property variant webserviceData: { 
    "name": "John Doe", 
    "email": "[email protected]", 
    "twitter": "@johndoe" 
} 
Page { 
    // page with a button to display profile 
    Container { 
     layout: DockLayout { 
     } 
     Label { 
      horizontalAlignment: HorizontalAlignment.Center 
      verticalAlignment: VerticalAlignment.Top 
      text: webserviceData.name 
     } 
     Button { 
      horizontalAlignment: HorizontalAlignment.Center 
      verticalAlignment: VerticalAlignment.Center 
      text: qsTr("Show Profile") 
      onClicked: { 
       // show detail page when the button is clicked 
       profilePage = profileDefinition.createObject(); 
       profilePage.myProfileData = webserviceData; 
       navPane.push(profilePage); 
      } 
      attachedObjects: [ 
       ComponentDefinition { 
        id: profileDefinition 
        source: "profilePage.qml" 
       } 
      ] 
     } 
    } 
} 
onPopTransitionEnded: { 
    // Clean up any pages that have been popped, to avoid memory leaks 
    if (profilePage == page) { 
     page.destroy(); 
    } 
} 
} 

profilePage.qml

// Navigation pane project template 
import bb.cascades 1.0 

Page { 

/* Our data property 
* Note: A variant is a QVariant Qt type, so it can easily handle different 
* data types, in our case it is a map. 
* Without the braces to denote that it is an object you will get a TypeError 
* from QML at runtime 
*/ 
property variant myProfileData: { /*empty object*/ } 

// page with profile details 
paneProperties: NavigationPaneProperties { 
    backButton: ActionItem { 
     onTriggered: { 
      // Pop this page off the stack and go back 
      navPane.pop(); 
     } 
    } 
} 
Container { 
    Label { 
     text: qsTr("Profile Page") 
     horizontalAlignment: HorizontalAlignment.Center 
     textStyle { 
      base: SystemDefaults.TextStyles.TitleText 
      color: Color.Blue 
     } 
    } 
    Label { 
     text: "Name:" 
     horizontalAlignment: HorizontalAlignment.Left 
    } 
    TextField { 
     text: myProfileData.name 
     horizontalAlignment: HorizontalAlignment.Center 
    } 
    Label { 
     text: "Email:" 
     horizontalAlignment: HorizontalAlignment.Left 
    } 
    TextField { 
     text: myProfileData.email 
     horizontalAlignment: HorizontalAlignment.Center 
    } 
    Label { 
     text: "Twitter:" 
     horizontalAlignment: HorizontalAlignment.Left 
    } 
    TextField { 
     text: myProfileData.twitter 
     horizontalAlignment: HorizontalAlignment.Center 
    } 
} 
} 

Hopefull y qui vous aide à démarrer. En outre, ces exemples de projets sur GitHub peuvent aider:

https://github.com/blackberry/Cascades-Samples/tree/master/quotes

https://github.com/blackberry/Cascades-Samples/tree/master/weatherguesser

Questions connexes