IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Quick Discussion :

Mise à jour d'un TableView depuis la sélection d'une liste déroulante


Sujet :

Qt Quick

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Mise à jour d'un TableView depuis la sélection d'une liste déroulante


    J'ai un TableView me permettant d'afficher une liste d'articles issus d'une BDD. Les références de ceux-ci sont stockés dans un combobox inclus en première colonne de ce TableView. Je souhaite, lors de la sélection d'une référence mettre à jour la désignation, prix ....

    Je tourne en rond sur cette dernière partie. Dans la théorie ça ne me semblait pas très compliqué à faire mais la je patauge.
    Voici mon code exemple :

    Code qml : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import QtQuick 2.4
    import QtQuick.Layouts 1.1
    import QtQuick.Controls 1.3
     
    Item {
        height : 200
        width : 300
     
        ListModel {
            id: libraryModel
            ListElement {
                name: "Pomme"
                val: "5"
            }
            ListElement {
                name: "Poire"
                val: "7"
            }
        }
     
        ListModel {
            id: tabModel
            ListElement {name : "" ; val : ""}
        }
     
        TableView {
            id : tab
            anchors.fill: parent
            TableViewColumn{ role: "name"  ; title: "Fruit" ; width: 100 ; delegate :comboDelegate }
            TableViewColumn{ role: "val" ; title: "Prix" ; width: 200 ; delegate :editableDelegate }
            model: tabModel
        }
     
        Component {
            id: editableDelegate ; TextField {}
        }
        Component {
            id: comboDelegate
            ComboBox {
                id : combo
                model : libraryModel
                textRole: "name"
                onCurrentIndexChanged{
                    tabModel.setProperty(styleData.row, "val", libraryModel.get(currentIndex).val)
                }
            }
        }
    }

    Je bloque donc sur ce que j'ai a mettre dans onCurrentIndexChanged.

    Une idée ???

    ++

    J
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    Bonsoir,
    1) onCurrentIndexChanged n'est pas le plus adapté.
    2) Tu peux utiliser styleData.value dans ton TextField

    Code qml : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import QtQuick 2.4
    import QtQuick.Layouts 1.1
    import QtQuick.Controls 1.3
     
    Item {
        height : 200
        width : 300
     
        ListModel {
            id: libraryModel
            ListElement {
                name: "Pomme"
                val: "5"
            }
            ListElement {
                name: "Poire"
                val: "7"
            }
        }
     
        ListModel {
            id: tabModel
            ListElement {name : "" ; val : ""}
            ListElement {name : "" ; val : ""}
        }
     
        TableView {
            id : tab
            anchors.fill: parent
            TableViewColumn{ role: "name"  ; title: "Fruit" ; width: 100 ; delegate :comboDelegate }
            TableViewColumn{ role: "val" ; title: "Prix" ; width: 200 ; delegate :editableDelegate }
            model: tabModel
        }
        Component {
            id: editableDelegate ; TextField {text: styleData.value}
        }
        Component {
            id: comboDelegate
            ComboBox {
                id : combo
                model : libraryModel
                textRole: "name"
                onActivated{
                    tabModel.setProperty(styleData.row, "val", libraryModel.get(currentIndex).val)
                }
            }
        }
    }

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    RRRRrrrrrr ....


    Je l'avais bien mis à un moment ce bestiau de styleData.value, mais j'ai du le retirer et pas refaire tous les tests

    Par contre je pense que onActivated n'est pas non plus le plus adapté : cela prend en fait l'index au moment où l'on active le combobox et donc de se fait produit une erreur dans libraryModel.get(currentIndex).val.

    Merci à toi, ... j'aurai sûrement chercher encore un moment puisque pour ça ne fonctionnait pas (me demande bien ce que j'ai pu oublier au moment du test d'ailleurs )

    @+
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    J'ai trouvé mon erreur.

    Lorsque j'ai testé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Component {
            id: editableDelegate ; TextField {text: styleData.value}
    }
    J'ajoutais mes éléments dans le ListModel comme suit :
    .... eeuuuhhh .... et comment savoir qui va où ???

    avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabModel.append({"name":"", "val":""})
    ça va mieux
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/09/2009, 03h40
  2. Réponses: 2
    Dernier message: 02/03/2007, 22h20
  3. Réponses: 1
    Dernier message: 10/07/2006, 13h40
  4. obliger sélection dans une liste déroulante
    Par doyle01 dans le forum Access
    Réponses: 4
    Dernier message: 15/05/2006, 15h31
  5. Garder fixe la sélection d'une liste déroulante
    Par hysteresis dans le forum ASP
    Réponses: 11
    Dernier message: 20/10/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo