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 :

Comment créer une fenêtre la plus grande possible

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut Comment créer une fenêtre la plus grande possible
    Bonjour à tous,

    j'ai une fenêre de type QDialog, que j'ai créé par Qt Designer, et lorsque j'appelle cette fenêtre dans mon "main", je voudrais qu'elle s'ouvre le plus grand possible, c-a-d prendre toute la place de l'écran.
    Je voudrais aussi pouvoir lire sa largeur et hauteur.

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Points : 195
    Points
    195
    Par défaut
    Bonjour,
    pour l'affichage tu as la fonction : showMaximized()
    pour lire la largeur : width()
    et la hauteur : height()

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    Bonsoir

    Lit bien la doc de QDialog.
    Elle herite de QWidget qui implemente un slot qui realise ce que tu veux en un seul appel.

    Bonne soiree!

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Merci pour vos réponse, par contre le showMaximized() met bien la fenêtre en grand par contre les width() et height() me donne la taille max qui a été définit dans le fichier ui met ce n'est pas la taille réelle de la fenêtre.

  5. #5
    Membre actif
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Points : 287
    Points
    287
    Par défaut
    Les différentes "tailles" d'une fenêtre:
    http://qt.developpez.com/doc/latest/...indow-geometry

    Tu y trouveras tout ce que tu veux.

  6. #6
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Une fenêtre agrandie en plein écran n'est pas réellement agrandie comme lorsqu'on modifie sa largeur et sa longueur, si jamais tu repasses la fenêtre en non-maximisé elle reprendra exactement la même taille que lorsque tu l'as maximisée.
    Mais si tu veux seulement que ton appli prenne tout l'écran, connaitre les détails n'est pas utile, Qt gère tout ça lui même.

    Si tu tiens absolument à avoir les dimensions, ça dépend de l'OS, de l'écran etc. Apparemment (selon ce blog) on peut récupérer la dimension de l'écran, mais je ne sais pas si ça prend en compte les menus de l'OS etc ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QApplication::desktop()->screenGeometry(); // Renvoie un QRect

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    En fait je veux agrandir ma fenêtre au maximum, et après lire la taille de celle ci pour pouvoir ajuster un QGraphicsView en fonction, en gros je fait un resize de ma QGraphicsView en fonction de la taille de la fenêtre, c'est tout.

  8. #8
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Si tu veux seulement agrandir ton widget, il suffit de le mettre dans un layout. A partir du designer, tu sélectionnes ta fenêtre, et tu cliques sur un des boutons layout de la barre d'outil. Ça va assigner automatiquement tous les widgets appartenant à la fenêtre à un layout qui sera lui même automatiquement assigné en layout principal de la fenêtre.

    Si tu parles des dimensions de ta scène, essaye le code que j'ai donné au dessus pour obtenir les valeurs, et fais des tests pour voir si la barre des tâches etc sont prises en compte ou non.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Merci pour les réponses.
    J'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QDesktopWidget desktop;
    QRect sizeScreen = desktop.screenGeometry();
     
    this->showMaximized();   // la fenetre prend la taille max qu'elle peut
    ui->graphicsView_image->resize(sizeScreen.width()-40, sizeScreen.height()-100);
    donc ceci fonctionne mais le problème est qu'il suffit que la barre du dessus ou dessous soit plus large ou moins large, ou sur le coté, enfin bref, tout ce que l'on peut imaginer, et mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ui->graphicsView_image->resize(sizeScreen.width()-40, sizeScreen.height()-100);
    ne fonctionne plus
    Mon besoin est vraiment de connaitre la taille de ma fenetre et ainsi en deduire la taille de ma GraphicsView.

  10. #10
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    A ce moment place un widget vide en tant que central-widget de ta fenêtre, et comme il sera agrandi avec ta fenêtre, sa dimension te donnera exactement la dimension du contenu de ta fenêtre. Il suffit de mettre le contenu dans ta fenêtre en enfant de ce widget (enfin avec un layout bien sûr).

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    heu là tu me parles chinois

    Ma QGraphicsView que j'ai créé par Qt Designer est un widget, non ?
    dans lorsque j'ouvre le fichier ui, je suppose que je dois avoir le central-widget dont tu me parles ? mais je ne le vois pas.

  12. #12
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Hum, si ta QGraphicsView est le seul widget de ta fenêtre, il prend déjà tout l'espace disponible de ta fenêtre (si tu as bien appliqué un layout comme je l'ai dit dans mon premier message). Si tu ne l'as pas fait, je te renvoie à la doc :
    http://qt.developpez.com/doc/latest/designer-layouts/

    Sinon, tu ne verras pas le "central-widget" dans le designer, ça ne désigne pas un widget existant, mais c'est une propriété de ta fenêtre. Cette propriété contient le pointeur du widget utilisé en tant que widget principal (le widget ultime qui contient tous les autres si tu veux). Tu peux fournir toi même un widget à ta fenêtre avec cette fonction, pour lui dire d'utiliser CE widget en tant que central-widget.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    alors j'ai fait les choses suivantes :
    j'ai définit un layout horizontal et vertical sur ma QGraphicsView par Qt Designer.
    après dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    centralWidget = new QWidget(this);
    this->setCentralWidget(centralWidget);
    le problème est qu'à la compile il me dit que setCentralWidget n'est pas un membre de ma class. Et c'est normal.

    Comment faut-il faire alors ?

  14. #14
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Je n'avais pas fait attention que tu utilises QDialog et pas QMainWindow.

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    et après, je peux faire quoi alors ?

  16. #16
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Excuse moi d'insister, mais tu es vraiment certain de devoir redimensionner ton QGraphicsView à la main ? Parce que ton code ui->graphicsView_image->resize(...) redimensionne uniquement le widget, et cela se fait automatiquement en utilisant les layouts (comme je te l'ai indiqué plus haut). Si c'est ta seule utilisation des dimensions de ta fenêtre, tu n'en as pas besoin.

    Après si tu as besoin de ces dimensions pour faire des calculs au sein de ton QGraphicsView, une fois ton objet ui->graphicsView_image redimensionné automatiquement pour prendre tout l'espace de ta fenêtre, les dimensions de celui-ci correspondront à ce que tu veux.

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    T'inquiete, tu peux insister, mon besoin exacte est que lorsque ma fenetre s'ouvre, qu'elle prenne la place maximum qu'elle peut prendre, et ça, ça fonctionne grace à par contre j'ai aussi besoin que ma QGraphicsView que j'ai mis grace au designer prenne aussi la plus grande place possible dans la fenêtre.
    Concernant le layout, je suis retourné dans Qt Designer où j'ai mis un Layout horizontal et vertical autours de ma QGraphicsView, mais lorsque je teste tout, cette QGraphicsView reste aussi petite que je l'avais définit dans Qt Designer alors que ma fenêtre à pris la taille maximale.
    Peu importe la méthode utilisée, je veux juste que ça fonctionne

  18. #18
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Citation Envoyé par SuperSeb95 Voir le message
    j'ai aussi besoin que ma QGraphicsView que j'ai mis grace au designer prenne aussi la plus grande place possible dans la fenêtre.
    C'est exactement le rôle du layout.

    Citation Envoyé par SuperSeb95 Voir le message
    Concernant le layout, je suis retourné dans Qt Designer où j'ai mis un Layout horizontal et vertical autours de ma QGraphicsView, mais lorsque je teste tout, cette QGraphicsView reste aussi petite que je l'avais définit dans Qt Designer alors que ma fenêtre à pris la taille maximale.
    C'est un peu difficile à expliquer pour le designer, mais dans l'idée tu peux placer un layout dans ta fenêtre, comme n'importe quel widget, il sera positionné là où tu le mets et ne s'agrandira pas. En fait ces objets seront des enfants de ta fenêtre.

    Pour qu'un objet prenne tout l'espace d'une fenêtre, il faut qu'il soit déclaré en tant que layout principal (ou aussi central-widget pour une QMainWindow si on utilise un widget et pas un layout).

    Je t'avais déjà donné ce lien qui explique tout ça en détail et pour Qt Designer :
    http://qt.developpez.com/doc/latest/designer-layouts/

    Dans ton cas c'est cette partie qu'il faut faire :
    http://qt.developpez.com/doc/latest/...p-level-layout
    En bref, sélectionner la fenêtre et lui appliquer un layout. Cela va créer un layout principal qui va contenir tous les objets placés dans la fenêtre. Si tu as seulement ton QGraphicsView il va donc prendre toute la place (quel que soit le layout). Si tu as d'autres widgets, l'espace sera réparti (selon le type de layout).

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Bon y a du mieux, mais ce n'est toujours pas ça, alors voilà ce que j'ai fait (pour info lorsque je dit que j'utilise Qt Designer, en fait c'est le Qt Designer de Qt Deboggeur) :
    donc j'ouvre mon fichier .ui en question, puis je click droit sur ma fenêtre "Mettre en page" -> "Mettre en page dans layout de formulaire". Après je fais glisser un layout vertical et horizontal dans ma fenetre pricinpale, par contre ces layouts se présentent sous forme de point et plus comme un carré comme avant. Bon bref, je lance le truc et j'ai bien ma QGraphicsView qui est ajustée à son max en horizontale par contre sa verticale est ajustée aussi mais pas à son maximum. Et je ne suis pas au maximum de l'image affichée puisque j'ai des ascenseurs en horizontal et vertical.

  20. #20
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Je ne vois pas ce qu'est Qt Deboggeur, en tout cas ce que tu as fait me semble bon. Mis à part le layout de formulaire, il a un comportement un peu particulier il aligne les objets par paire (label -> saisie) verticalement, donc en l'appliquant à un seul widget (ton graphicsview) il est possible que ça ait un comportement un peu foireux. Utilise plutôt un vertical ou horizontal.

Discussions similaires

  1. [AC-2007] Tutoriel comment créer une fenêtre d'activation pour votre base
    Par robyseb dans le forum Contribuez
    Réponses: 27
    Dernier message: 12/07/2020, 23h38
  2. Comment créer une fenêtre triangulaire
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 8
    Dernier message: 18/07/2013, 10h26
  3. Comment créer une fenêtre depuis un dialog de ressource.
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 11h10
  4. Réponses: 7
    Dernier message: 29/05/2007, 10h37
  5. Réponses: 1
    Dernier message: 21/05/2007, 10h33

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