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

Discussion :

Application multifenêtre et ouverture conditionnelle d'une fenêtre [Graphics View]

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Passioné
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Passioné

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Application multifenêtre et ouverture conditionnelle d'une fenêtre
    Bonjour.
    Je suis en train de créer une appli qui permet de fournir des énigmes à des élèves dans le cadre d'un escape-game.

    Voici son schéma de fonctionnement :

    Nom : escapeme_fonctionnement.png
Affichages : 236
Taille : 27,6 Ko

    Mon projet Qt se décompose en deux sous-projets.

    • Un configurateur qui enregistre les paramètres dans un fichier .ini, recueille la phrase à chiffrer, la chiffre, est capable de la déchiffrer.
    • Un module utilisateur composé d'une ou deux fenêtres selon les cas.



    J'aimerais que la 'fenêtre 1' de saisie du code PIN s'affiche seulement si le paramètre 'isActivated' du fichier de conf est paramétré sur 'true'.
    Si ça n'est pas le cas, j'aimerais que lorsqu'on lance le module utilisateur on aille directement à la 'fenêtre 2' pour déchiffrer la phrase.

    Mais voilà, je patine un peu quant au choix des Widgets à utiliser et à leur organisation...

    Je pense utiliser utiliser une MainWindow - QMdiArea avec des tabviews, cela vous semble cohérent ?
    • Dans ce cas, comment paramétrer l'affichage conditionnel de la première subwindow ?
    • Et comment mettre le focus sur la subwindow n°1, et bloquer la subwindow n°2 tant que le code PIN n'est pas saisi ?


    D'avance merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 103
    Points : 103
    Points
    103
    Par défaut appli multifenetre
    Bonjour,

    vous pouvez faire une classe différente pour chaque bloc de votre "schéma".

    Par la suite la communication entre les différentes classes se fera à l'aide de getteur, setteur et pointeur pour que la communication aille dans les deux sens

    entre chaque classe.

    Pour les titres et les textes utilisez des QLabel et des QText.

    Si vous avez plusieurs ressources à partager et à gérer à "manager/scheldule" utiliser la classe QThread.

    Cdt, merci

    KM

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Passioné
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Passioné

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour, merci pour ta réponse.

    Bonjour,

    vous pouvez faire une classe différente pour chaque bloc de votre "schéma".

    Par la suite la communication entre les différentes classes se fera à l'aide de getteur, setteur et pointeur pour que la communication aille dans les deux sens

    entre chaque classe.
    J'ai effectivement commencé à travailler sur la voie que tu suggères, voici le main.cpp que j'avais :
    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
    bool readConfig()
    {
        QString confFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "", QStandardPaths::LocateDirectory);
        confFile += "emConf.ini";
        QSettings* conf = new QSettings(confFile, QSettings::IniFormat, NULL);
        bool isActivated = conf->value("WelcomeWindow/isActivated").toBool();
        delete conf;
        return isActivated;
    }
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
     
           bool pinWindow = readConfig();
           if(pinWindow){
     
              PinCode pin;
              if(pin.exec() != QDialog::Accepted){
                  return a.exec();
              }
           }
     
           Dechiffrer w;
           w.show();
           return a.exec();
    Si globalement ça fonctionne, il me reste un problème. Si jamais je quitte sur la fenêtre pin en cliquant sur la croix, alors la fenêtre se ferme bien mais le processus reste actif. Il faut alors killer le processus.

    Du coup je commence des tests avec QStackedWidgets qui m'a l'air adapté à mes besoins en fait...

    Mais j'aimerais tout de même comprendre quel est le problème dans mon code ? Est-ce que ça peut venir du fait que toutes mes fenêtres sont des QDialog ?

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 103
    Points : 103
    Points
    103
    Par défaut class & QDiaolog
    Bonjour,

    il n'y a pas de problèmes.

    Plusieurs classes peuvent dériver de la même classe mère et dans votre cas de QDialog.

    Merci,

    Cordialement,

    KM

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Points : 421
    Points
    421
    Par défaut
    Bonjour,

    Il est normal que l'application reste active, car vous retournez a.exec(). Ce qui va lancer la boucle d'événement de l'application, mais sans affiché aucune fenêtre.

    Ceci devrait faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(pin.exec() != QDialog::Accepted){
        return 0; //Vous pouvez retourner une valeur différente de 0 pour indiquer un code erreur.
    }

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Passioné
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Passioné

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour les explications.

    Du coup j'ai contourné le problème en passant par un QStackedWidget, qui de surcroît, donne une cohérence graphique encore meilleure à mon projet.

    Mais j'en prend note pour mes futurs projets.

    Merci beaucoup

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

Discussions similaires

  1. Ouverture automatique d'une fenêtre
    Par imad1903 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/02/2008, 11h43
  2. Ouverture automatique d'une fenêtre
    Par imad1903 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 11h43
  3. Ouverture automatique d'une fenêtre modal
    Par lodan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/09/2006, 22h24
  4. ouverture/fermeture d'une fenêtre modale showModelessDialog
    Par marti dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/01/2006, 05h03
  5. [Delphi 6] Empêcher l'ouverture ou fermer une fenêtre
    Par KrusK dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 08/09/2005, 11h55

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