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 :

Navigation et déclaration de pages


Sujet :

Qt Quick

  1. #1
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut Navigation et déclaration de pages
    Bonjour,
    cela fait quelques jours que je cherche en vain de creer mon application.
    J'ai decider de definir l'interface graphique en qml (je pensais accelerer les choses).
    Le probleme, c'est que je suis blocke des le debut.
    Je cherche en effet de creer plusieurs page et de pouvoir naviguer entre les pages en cliquant sur des boutons.
    Comment definir ceci avec qml?
    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut Ca avance...
    Alors voila...
    J'ai reussi a faire la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Button {
            id: buttonpage1
            x: 30
            y: 422
            text: "page 1"
            onClicked:  pageStack.push(Qt.resolvedUrl("FilePage.qml"));//pageStack.push(page1)
    Je defini ici un boutton et lorsque je clique sur celui ci, je fais un push sur le page stack.
    Le pageStack etant une pile dans laquelle s'entace toutes les pages.
    Un push(), provoque l'affichage d'une page et un pop(): l'exclusion de la page.

    Ce que je ne sais pas parcontre c'est si vraiment cela agit comme une pile au niveau de la memoire.
    c-a-d: Puis je faire plein de push, sans jamais de preocuper de faire un pop()?
    Merci

  3. #3
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut Apparement ca garde en memoire
    Je viens de faire deux pages: une rouge et une bleue.
    J'ai fais des push, puis des pop, et apparement c'est stocke quelque part en memoire.

    Y'a t'ils des gens sur ce forum qui connaissent un peu QML? Car j'ai un peu l'impression d'etre seul.
    Merci

  4. #4
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par IsraGab Voir le message
    J'ai fais des push, puis des pop, et apparement c'est stocke quelque part en memoire.
    ? Tu veux que ce soit mis où, sérieusement ?

    Si tu ne fais pas assez de pop() à la fermeture du contexte Qt Quick, ça finira supprimé, aucun problème pour ça (maintenant, si c'est une interface qui doit vivre pendant des mois, il faudra faire plus attention).
    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 régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut
    Salut,

    Envoyé par IsraGab
    J'ai fais des push, puis des pop, et apparement c'est stocke quelque part en memoire.
    Tu veux que ce soit mis où, sérieusement ?
    ma question a la base etait de passer d'une feuille a l'autre, sans pour autant garder un historique des feuilles par lesquelles je suis passe. La seulle solution que j'ai trouve etait de me servir de pop et push.
    Maintenant, vu que c'est stocke quelque pqrt, je vais devoir gerer la memoire.

    Existe t il un autre moyen que push et pop pour naviguer dans mes pages?
    Merci

  6. #6
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut
    Bonsoir,
    J'ai decouvers aujourd'hui le loader.
    Ceci me permet de charger dynamiquement une vue/page sur mon ecran.
    Admettons une page: MainPage dans laquelle se trouve un bouton. Lorsque je clique sur ce bouton, je charge une age appelee Coucou.
    Voici le code
    MainPage.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
    Page {
        id: mainPage
                Rectangle {
                    color: "red"
                    anchors.fill: parent
                }
     
                Loader { id: pageLoader
                anchors.fill: parent}
     
                         Button {
                             id: button1
                             x: 174
                             y: 328
                             text: "Button"
                             onClicked: pageLoader.source = "Coucou.qml"
                     }
            }
    et Coucou.qml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Rectangle {
        width: 100
        height: 62
        color: "#2e61ea"
        rotation: -30
        scale: 1.900
    }
    J'ai donc au depart, un ecran rouge sur MainPage, et lorsque je clique sur "Bouton", mon ecran devient bleu. C'est genial, ca marche, sauf que........................Le boutton est apparait egalement sur mon ecran bleu (ma deuxieme page).
    Quelqu'un pourait m'aider?
    Merci

  7. #7
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut on avance tout doucement, mais surement
    Bon, pour ce qui est de la visibilite. il sufit d'imbriquer le bouton sous le loader.
    Par exemple:
    MainPage
    >Rectangle
    .>Loader
    ..>Bouton

    Au lieu de
    MainPage
    >Rectangle
    .>Loader
    .>Bouton

    Comme j'avais precedement.

    Merci beaucoup pour votre aide

    PS: Je rigole bien evidement

  8. #8
    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
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Je ne sais pas si vous utilisez ou non les QML-Components qui permettent d'utiliser des éléments natifs (exemple : un bouton), mais je réponds quand même en partant du principe que non.

    Avec QML, on essaye d'éviter de "créer" des éléments en les loadant depuis l'extérieur. Le système est très bien fait et permet de dessiner uniquement les éléments visibles. Il ne perd pas du temps à dessiner lorsque cela n'est pas nécessaire. De ce fait, l'approche que j'ai l'habitude d'utiliser est de placer tous les éléments QML dans mon fichier principal assemblant les données et de définir la propriété "visible" des différentes pages.

    Exemple :

    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
    Item {
        id: main
     
        property string currentPage: "home"
     
        Page {
            id: homePage
            anchors.fill: parent
            visible: main.currentPage == "home"
     
            Button {
                anchors.centerIn: parent
                text: "Go to other page"
                onClicked{
                    main.currentPage = "other"
                }
            }
        }
     
        Page {
            id: otherPage
            anchors.fill: parent
            visible: main.currentPage == "other"
     
            Button {
                anchors.centerIn: parent
                text: "Go to home page"
                onClicked{
                    main.currentPage = "home"
                }
            }
        }
    }
    De là, seule la page "home" ou la page "other" sera visible, selon le contenu de la propriété "currentPage". Je procède généralement ainsi, donc sans utiliser les Loaders et en masquant les pages ne devant pas être visibles.

    Espérant vous avoir aidé,
    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

  9. #9
    Membre régulier
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Points : 114
    Points
    114
    Par défaut Merci enormement
    Merci beaucoup,
    Cést exactement ce que je cherchais a faire. Je ne pensais pas specialement faire ca avec un loader, mais mes recherches sur le net m'y ont mener.
    Encore une fois merci, ca faisait vraiment longtemps que je cherchais a faire une chose aussi basique.
    Je viens de me mettre au developement d'applications, et je voulais faire la logique de l'appli en C++, pour le GUI, je n'avais pas trop d'idees. J'ai commence avec Qt et de fil en aiguille, je suis arive au QML (je trouvais les animations sympa et gravement simplifiees).
    Je me suis fixe jusqu'a demain, sinon je me mettais au JAVVA et a l'Android comme tout le monde.
    Encore une fois merci bcp
    Yonathan

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

Discussions similaires

  1. Navigation entre les différentes pages en silverlight
    Par mikoukoumi dans le forum Silverlight
    Réponses: 21
    Dernier message: 14/06/2010, 11h30
  2. Deux nouveautés pour le système de navigation en haut de page
    Par Janitrix dans le forum Evolutions du club
    Réponses: 0
    Dernier message: 24/07/2009, 12h25
  3. Navigation : lien reflétant la page présente
    Par furiet dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/01/2009, 13h11
  4. navigation et numérotation de pages
    Par le_contact dans le forum Langage
    Réponses: 1
    Dernier message: 29/02/2008, 09h31
  5. navigation vers une autre page
    Par carusier dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/04/2007, 12h24

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