Cannot read property 'value' of undefined
Bonjour, je débute tout juste sur QML, et je voulais faire une petite application permettant de calculer l'imc et le poids ideal d'une personne.
J'ai 2 pages.
La première permet de saisir les infos utiles (sexe, taille, age, poids).
La seconde affiche l'imc et la corpulence, et propose de calculer le poids idéal suivant 3 méthodes au choix.
Mon problème est de mettre à jour les données d'une page en fonction des données de l'autre page
Du coup j'ai 3 fichiers:
+ main.qml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
import QtQuick 2.9
import QtQuick.Controls 2.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Tabs")
SwipeView {
id: swipeView
anchors.fill: parent
currentIndex: tabBar.currentIndex
Page1Form {
switchSexe.onCheckedChanged: {
if (switchSexe.text==="Femme")
{
switchSexe.text="Homme"
}
else
{
switchSexe.text="Femme"
}
}
sliderPoids.onValueChanged: {
labelValPoids.text=sliderPoids.value;
}
sliderTaille.onValueChanged: {
labelValTaille.text=sliderTaille.value;
}
}
Page2Form {
}
}
footer: TabBar {
id: tabBar
currentIndex: swipeView.currentIndex
TabButton {
text: qsTr("Informations Personnelles")
}
TabButton {
text: qsTr("IMC et Poids idéal")
}
onCurrentIndexChanged: {
if (currentIndex===1)
{
var imc;
var poids;
var taille;
poids=Page1Form.sliderPoids.value;
console.log(poids);
taille=Page1Form.sliderTaille.value;
imc=poids/(taille*taille);
Page2Form.labelIMC.text=imc;
}
}
}
} |
+ Page1Form.ui.qml
extrait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Page {
id: page1
width: 600
height: 400
property alias page1: page1
property alias spinBoxAge: spinBoxAge
property alias labelValPoids: labelValPoids
property alias labelValTaille: labelValTaille
property alias sliderTaille: sliderTaille
property alias sliderPoids: sliderPoids
property alias switchSexe: switchSexe
...
RowLayout {
id: rowLayout5
width: 100
height: 100
Label {
id: labelPoids
text: qsTr("Poids")
}
Slider {
id: sliderPoids
stepSize: 0.1
from: 15
to: 300
value: 15
}
Label {
id: labelValPoids
text: qsTr("15")
}
}
}
} |
+ Page2Form.ui.qml
extrait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Page {
width: 600
height: 400
property alias buttonAge: buttonAge
property alias buttonLorentz: buttonLorentz
property alias buttonDevine: buttonDevine
property alias labelPoidsIdeal: labelPoidsIdeal
property alias dial: dial
property alias labelIMC: labelIMC
property alias labelCorpulence: labelCorpulence
...
Text {
id: text1
text: qsTr("IMC")
font.pixelSize: 12
}
Label {
id: labelIMC
text: qsTr("IMCCalculée")
}
}
}
} |
Je passe bien dans mon code de test de la valeur de l'index courant, mais je n'arrive pas à récupérer le poids et la taille de Page1Form...
Je m'y prend sûrement mal, quelqu'un peut il éclairer ma faible lanterne?
Merci d'avance.