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 Discussion :

Ouvrir un QMainWindow/QDialog avec une QAction


Sujet :

Qt

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Ouvrir un QMainWindow/QDialog avec une QAction
    Bonjour tout le monde ,

    J'ai un projet qui contient une classe [tab.cpp/tab.h] qui contient du code et tout, et j'ai une mainwindow qui herite du QMainWindow, et ce que je veux maintenant c'est d'ajouter un MainWindow ou QDialog pour que je puisse afficher un QPie (ouais j'ai quelques traitements que j'ai fait dans la classe tab.cpp) tout ce que je veux c'est de cliquer sur une QAction, qui m'ouvre un Window/Dialog avec un QPie chart dedans.

    Alors comment je peux faire ça ?, sachant que j'ai utilisée directement une variable QMainWindow, de l'afficher, elle s'afficher mais se ferme automatiquement

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bonjour utilises plutot une classe dérivée de QDialog ou de QWidget pour afficher ton QPie depuis ton action. (jamais vu deux mainwindow dans une application).si c'est derivé de QWidget tu utilises la méthode show() pour l'afficher si c'est dérivé de QDialog soit elle est modale et tu utilises la méthode exec() soit elle est non modale et tu utilises la méthode show(). (cf la doc de Qt sur doc.qt.io en recherchant QDialog).

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    D'accord assumons que je vais utiliser un Widget, est ce que c'est faisable ?

    en résumant, j'ai une fonction dans la classe [tab.cpp] qui fait du traitement, aprés je retourne ce traitement en tant que QMap<QString,double>, maintenant dans la classe [mainwindow.cpp], j'ai une QAction qui fait appel à une fonction au sein de la classe [mainwindow.cpp] je récupére les valeurs retournées par la fonction de la classe [tab.cpp], parfait ! je peux les afficher avec le qdebug(), maintenant j'exploite ces données pour dessiner mon QPie avec le même exemple proposée dans la documentation de QT, maintenant il faut que j'affiche mon QPie dans une Fenêtre n'importe quelle le but c'est qu'en mois j'affiche mon QPie

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    si tu dessines ton QPie à partir de ta QMap, il suffit de passer ta QMap en parametre du constructeur de ton Widget ou par une autre methode du Widget (Widget derivant de QWidget).comme cela tu pourras dessiner ton QPie dans ton Widget (dans la méthode paintEvent de ton Widget ou en le creant dans le constructeur de ton Widget)

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    ouais !, donc à la classe de mon widget, je dessine mon QPie mais c dans le constructeur ? et est ce que je peux mettre le code dans le constructeur de façon que le QPie sera prêt et de l'afficher ?

    désolé je suis un peu noob en QT/C++

  6. #6
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    oui tu peux mettre ton QPie dans le constructeur du Widget si tu as passé ta QMap en parametre de ton constructeur de ton Widget

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ouais mais comment?

    par exemple si je prends cet exemple de la documentation de QT :
    http://doc.qt.io/qt-5/qtcharts-piechart-main-cpp.html

    Je veux l'implementer dans un constructeur du QWidget

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Le probéme c'est que je peux même pas ouvrir le QWidget, ça s'ouvre et se ferme trés rapidement !,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ChartForm yourWindow; // Ici c'est mon formulaire de type QWidget
    yourWindow.show();
    Ce code est exécuté dans la classe mainwindow

    J'ai pu afficher le QDialog, mais est ce que je peux dessiner le QPie dedans ?, car l'exemple donnée en documentaion de QT, ils ont utilisées un QMainWindow

  9. #9
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    et bien si tu veux utiliser une widget, il faut l'allouer dynamiquement avec new car tu ne peux la mettre comme variable membre de ta mainwindow comme tu dois passer ta QMap en parametre de ton constructeur de ton widget,sinon elle disparait comme ce n'est qu une variable locale...
    si tu utilises un dialog et que tu ne l'alloue pas dynamiquement alors fait la modale avec exec() mais si tu mets le QPie dans le constructeur il faut quand meme passer en parametre de ton constructeur de ta dialog ta QMap puisque tu construit ton QPie avec les donnees de ta QMap

Discussions similaires

  1. Ouvrir & remplir StikyNot.exe avec une macro Excel
    Par Gil Moulin dans le forum Excel
    Réponses: 1
    Dernier message: 22/11/2013, 18h50
  2. ouvrir un fichier distant avec une adresse ip
    Par nina_23 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 29/04/2010, 10h15
  3. Comment ouvrir un fichier excel avec une commande batch ?
    Par Alexandrebox dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 18/03/2010, 13h15
  4. ouvrir un fichier PDF avec une JSP
    Par fernier dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/11/2007, 11h19
  5. ouvrir un fichier Excel avec une requete perso
    Par legillou dans le forum Access
    Réponses: 9
    Dernier message: 21/06/2005, 15h14

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