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 :

Afficher un QML lors d'un clic [Débuter]


Sujet :

Qt Quick

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 34
    Par défaut Afficher un QML lors d'un clic
    Bonsoir,

    Je ne comprend pas quelque chose qui pourra paraître facile pour certains...
    J'ai un fichier main.qml :

    Code : 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
    Rectangle {
        id: rectangle1
        width: 800
        height: 500
        MouseArea {
            id: mousearea1
            anchors.top: parent.top
            anchors.topMargin: 0
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            anchors.left: parent.left
            z: 0
     
            Rectangle {
                id: menuu
                width: 800
                height: 25
                anchors.bottomMargin: 475
                anchors.fill: parent
     
                Text {
                    id: ouvrir
                    x: 15
                    y: 5
                    color: "#ffffff"
                    text: qsTr("Ouvrir")
                    font.pixelSize: 10
     
                    MouseArea {
                        id: mouse_ouvrir
                        anchors.fill: parent
                        onClicked{ //?? }
                    }
                }
    }
    }
    Lorsque je clique sur mouse_ouvrir, je voudrais qu'une fenetre ListView tel que je l'ai décrit dans file.qml s'affiche :

    Code : 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
     
    ListView {
        id: filebrowser
        width: 360
        height: 300
        FolderListModel {
            id: foldermodel
            folder: "file:///home/user/"
            nameFilters: ["*.jpg", "*.png", "*.bmp", "*.jpeg"]
            showDotAndDotDot: true
        }
     
        Component {
            id: filedelegate
            Rectangle {
                width: parent.width
                height: 30
                Text {
                    text: fileName+" "+filePath
                    anchors.fill: parent
                    MouseArea {
                        anchors.fill: parent
                        onClicked{
                            if (foldermodel.isFolder(index)) {
                                foldermodel.folder = filePath
                            }
                        }
                    }
                }
            }
        }
     
        model: foldermodel
        delegate: filedelegate
    }
    C'est la première fois que je code en QML, je n'avais fait que des GUI avec des fichiers .ui et j'ai du mal à comprendre la logique des QML...

    Merci

  2. #2
    Membre éprouvé
    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
    Par défaut
    Salut,
    Pour commencer, dans ton main.qml, le MouseArea ne devrait pas avoir d'enfant (le rectangle dans ton cas).
    Ensuite, pour faire apparaitre des éléments nouveaux, il y a 2 façons de faire : Statique ou dynamique. Pour débuter commence par la statique qui consiste à cacher ce que l'on souhaite faire apparaitre. Soit en utilisant la propriété opacity du rectangle ou en décalant l'élément en dehors de la vue.
    @+

  3. #3
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonsoir,

    Ou tout simplement avec une propriété "visible", spécialement prévue pour cela. Généralement, s'il y a moyen d'éviter de passer par du dynamique (hors cas des modèles, je parle de createComponent() ou de Loaders) en passant par une méthode statique de camouflage d'un élément, il vaut mieux le faire car cela permet d'éviter d'avoir pas mal de mémoire à gérer derrière.

    Code : 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
    Rectangle {
        id: main
        width: 100
        height: 100
     
        MouseArea {
            anchors.fill: parent
            onClicked{
                view.visible = true;
            }
        }
     
        MonItem {
            id: view
            visible: false
        }
    }
    À savoir que dans le cas présent, un fichier nommé MonItem.qml se situera à côté du fichier main.qml. C'est la partie devant l'extension .qml qui détermine le nom de l'élément QML créé.

    Bonne continuation,
    Amnell.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Amnell Voir le message
    Généralement, s'il y a moyen d'éviter de passer par du dynamique (hors cas des modèles, je parle de createComponent() ou de Loaders) en passant par une méthode statique de camouflage d'un élément, il vaut mieux le faire car cela permet d'éviter d'avoir pas mal de mémoire à gérer derrière.
    Sauf qu'il faut alors charger ces composants dès le démarrage de l'application ; c'est probablement sans grande conséquence dès qu'il y a de la puissance de calcul, mais un mobile aura plus de mal à charger beaucoup de composants sans laisser poireauter l'utilisateur un certain temps. (C'est une optimisation, ce n'est pas à faire dès le début du développement de l'application sauf si on sait d'avance qu'on devra charger un grand nombre de composants et que les plateformes cible pourraient ne pas le digérer facilement – premature optimisation is root of all evil.)
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre éprouvé
    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
    Par défaut
    J'ai une petite préférence pour opacity qui permet d'ajouter facilement une transition dans le futur.
    Je n'ai pas vérifié, mais mon petit doigt me dit que opacity: 0 est équivalent à visible: 0 et doivent être gérés de la même façon en interne de Qt.

  6. #6
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Citation Envoyé par loupium Voir le message
    J'ai une petite préférence pour opacity qui permet d'ajouter facilement une transition dans le futur.
    Je n'ai pas vérifié, mais mon petit doigt me dit que opacity: 0 est équivalent à visible: 0 et doivent être gérés de la même façon en interne de Qt.
    L'un n'empêche pas l'autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Rectangle {
        visible: false
        opacity: visible ? 1 : 0;
        // ...
     
        Behavior on opacity { NumberAnimation { duration: 500; } }
    }
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

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

Discussions similaires

  1. [WB14] afficher une page lors d'un clic sur un bouton
    Par elscorpio dans le forum WebDev
    Réponses: 2
    Dernier message: 29/06/2011, 16h20
  2. afficher un formulaire lors d'un clic bouton
    Par koukou11 dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/03/2011, 13h37
  3. Cacher/Afficher un panel lors d'un clic sur une balise
    Par betsprite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/10/2010, 13h49
  4. Afficher un total avec une fonction lors d'un clic d'une case à cocher
    Par sandddy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2009, 09h52
  5. si checkbox cochée afficher une alerte lors du clic sur OK
    Par Nemesys dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/04/2007, 14h10

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