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 :

Créer un layout fixé dans le coin en haut à gauche de ma fenêtre

  1. #1
    Membre à l'essai
    Homme Profil pro
    technicien du son
    Inscrit en
    Novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien du son

    Informations forums :
    Inscription : Novembre 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Créer un layout fixé dans le coin en haut à gauche de ma fenêtre
    Bonjour,

    J'ai créer un programme qui créer plusieurs Widget quand on clique sur un bouton, ces Widgets se range dans un QGridlayout. Comme tout ca est en valeur relative, les layout commence au milieu de ma Fenêtre :

    Nom : Screenshot 2014-12-07 13.31.43.png
Affichages : 460
Taille : 38,0 Ko


    Alors que j'aimerais qu'il commence dans le coin haut gauche de la fenêtre et que l'écart entre les bouton soit fixe, et ne dépende pas de la taille de la fenêtre tout en gardant une taille de fenêtre non fixe.

    Voici le source de MaFenetre :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    #include "FenetrePrincipale.h"
    #include <iostream>
     
    using namespace std;
     
    FenetrePrincipale::FenetrePrincipale()
    {
     
        setMinimumSize(800,600);
     
        // Barre de menu
     
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
     
        QAction *actionNewProject = new QAction("&Nouveau Projet", this);
        menuFichier->addAction(actionNewProject);
     
        QAction *actionOpenProject = new QAction("&Ouvrir Projet", this);
        menuFichier->addAction(actionOpenProject);
     
        QAction *actionRecentFile = new QAction("&Fichiers recent", this);
        menuFichier->addAction(actionRecentFile);
     
        QAction *actionSave = new QAction("&Enregistrer", this);
        menuFichier->addAction(actionSave);
     
        QAction *actionSaveAs = new QAction("&Enregistrer sous", this);
        menuFichier->addAction(actionSaveAs);
     
        QAction *actionQuitter = new QAction("&Quitter", this);
        menuFichier->addAction(actionQuitter);
     
        QMenu *menuEdition = menuBar()->addMenu("&Edition");
     
        QAction *actionAddVideo = new QAction("&Ajouter une Video", this);
        menuEdition->addAction(actionAddVideo);
     
        QAction *actionAddVideos = new QAction("&Ajouter des Videos", this);
        menuEdition->addAction(actionAddVideos);
     
        QAction *actionSupVideos = new QAction("&Supprimez Videos", this);
        menuEdition->addAction(actionSupVideos);
     
        QMenu *menuTool = menuBar()->addMenu("&Outils");
     
        QAction *actionPref = new QAction("&Preferences", this);
        menuTool->addAction(actionPref);
     
     
        // QMenu *menuAffichage = menuBar()->addMenu("&Affichage");
     
        // Création de la barre d'outils
        QToolBar *toolBarFichier = addToolBar("Fichier");
        toolBarFichier->addAction(actionOpenProject);
        toolBarFichier->addAction(actionSave);
        toolBarFichier->addAction(actionAddVideo);
     
        //QPushButton *addVideobutton = new QPushButton("Add");
        //addVideobutton->setStyleSheet("background-color:black;");
        //toolBarFichier->addWidget(addVideobutton);
     
     
     
        // Zone centrale
     
        QWidget *zoneCentrale = new QWidget;
     
        // Layouts
     
        layout = new QGridLayout;
     
     
     
        //zoneCentrale->setFixedSize(900, 800);
        //layout->setColumnMinimumWidth(1,3);
        //layout->setRowMinimumHeight(1,1);
     
        zoneCentrale->setLayout(layout);
        setCentralWidget(zoneCentrale);
     
        // Connect
     
        connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
        connect(actionAddVideo, SIGNAL(triggered()), this, SLOT(createVideo()));
        connect(actionAddVideos, SIGNAL(triggered()), this, SLOT(InputDialog()));
    }
     
    void FenetrePrincipale::createVideo()
    {
     
        for(int j = a; j == 8; j++){
     
            cout <<"j ="<<  j << endl;
     
        }
     
        a += 1;
     
        if (a==9){
            a = 1;
            b+=1;
     
        }
     
        Video *m_video = new Video(count+1);
        layout->addWidget(m_video,a,b);
        count += 1;
     
    }
     
     
    void FenetrePrincipale::InputDialog()
    {
     
        m_videoinputint = QInputDialog::getInt(this, "Ajouter des videos", "Ajouter x videos");
        FenetrePrincipale::createVideos();
    }
     
     
     
    void FenetrePrincipale::createVideos()
    {
     
        for(int i = 0; i <  m_videoinputint; i++){
            FenetrePrincipale::createVideo();
        }
     
     
    }
    Merci d'avance

  2. #2
    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
    Hello,

    En utilisant QLayout::setAlignement() cela devrait faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    layout->setAlignment(Qt::AlignTop | Qt::AlignLeft);

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 393
    Points : 685
    Points
    685
    Par défaut
    J'aurais plutôt dit d'ajouter des spacers à droite et en bas. A tester

  4. #4
    Membre à l'essai
    Homme Profil pro
    technicien du son
    Inscrit en
    Novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien du son

    Informations forums :
    Inscription : Novembre 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Merci,

    Ça marche nickel avec set Alignement. J'ai pas encore testé avec les testeurs, faut que je me familiarise avec cette notion.

    Par contre est il possible l'espacement des blocs boutons ne change quand je redimensionne ma fenêtre. Genre une option qui définit une taille min et max d'une row ?

  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
    Hello,

    Je pense que ta classe Video, héritant de QWidget je présume, est configuré en "QSizePolicy::Expandable". Essaye avec ça dans le constructeur de la class Video:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
    En testant avec des boutons par exemple, je n'ai pas ce problème.

    Sinon il y a aussi la possibilité d'ajouter un widget "invisible" sur la dernière ligne, et d'ensuite utiliser la fonction QGridLayout::setRowStretch(index_de_la_ligne, 1); afin que la dernière ligne utilise tout l'espace supplémentaire.

  6. #6
    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
    Citation Envoyé par mintho carmo Voir le message
    J'aurais plutôt dit d'ajouter des spacers à droite et en bas. A tester
    Si je ne me trompe pas, les fonctions addStretch() ou addSpacerItem() n'existent pas dans la classe QGridLayout. Par contre il est possible d'ajouter des "QSpacer" depuis Qt Designer, mais pas depuis le code, en tous cas à ma connaissance.

  7. #7
    Membre à l'essai
    Homme Profil pro
    technicien du son
    Inscrit en
    Novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien du son

    Informations forums :
    Inscription : Novembre 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Hello,

    Je pense que ta classe Video, héritant de QWidget je présume, est configuré en "QSizePolicy::Expandable". Essaye avec ça dans le constructeur de la class Video:

    Code :
    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);En testant avec des boutons par exemple, je n'ai pas ce problème.
    Cela ne marche pas pour moi

  8. #8
    Membre à l'essai
    Homme Profil pro
    technicien du son
    Inscrit en
    Novembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien du son

    Informations forums :
    Inscription : Novembre 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je pense m’être mal exprimé.

    Je voudrais que chaque bloc de boutons ( chaque itération de la classe video ) soit fixe, la quand je resize la fenêtre les bouton au seins de leur groupe (classe) ne bouge pas, mais elles s’écartent en elle.

    J'aimerais que tout soit fixe en gros. Dois je me mettre en placement absolu et du coup abandonnée le gridlayout et faire un petit algorithme qui va les placés bien comme il faut ?

Discussions similaires

  1. garder un object dans un coin de la fenetre fixe
    Par dmichel dans le forum GLUT
    Réponses: 1
    Dernier message: 18/07/2008, 06h49
  2. Réponses: 10
    Dernier message: 26/05/2008, 16h10
  3. [JFrame] Ouverture fenêtre autre part que dans coin haut gauche
    Par tooney dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 28/05/2005, 20h36
  4. Comment créer un champs " BOOLEAN " dans ACCESS ?
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/10/2004, 11h15

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