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 :

Installation d'une barre de menus

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 42
    Par défaut Installation d'une barre de menus
    Bonjour à tous,

    Je développe une interface Qt dans une QMainWindow et je souhaite disposer d'une belle barre de menus.

    Cependant, il me semble qu'au départ celle-ci fonctionnait correctement. A présent, dans les 5 cm à partir de la gauche de la fenêtre dans la barre des menus, les boutons ne sont plus accessibles. Oui oui, vous avez bien entendu, dans les 5 cm. :waw:

    C'est-à-dire que si mon premier bouton de menu est plus petit que 5 cm, il est inaccessible. Si il est plus grand, il est alors accessible.

    Pour vous illustrer la chose et par avance je m'excuse pour le lien externe, je vous joints une petite vidéo car cela me parait assez invraisemblable.... :magicien:

    Youtube Video

    Pour la partie de code, la voici:

    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
        // AJOUT D'UN MENU DANS LA FENETRE
        QMenuBar *menuBar = new QMenuBar(0);
        QMenu *menuFichier = menuBar->addMenu("Fichier");
        QMenu *menuEdition = menuBar->addMenu("&Edition Balaaa Blalalal Blalalala Blalala");
        QMenu *menuAffichage = menuBar->addMenu("Affichage");
        QAction *actionQuitter = new QAction("Quitter", this);
        QAction *actionFullScreen = new QAction("Plein écran", this);
        QAction *actionMaximized = new QAction("Affichage standard",this);
        menuFichier->addAction(actionQuitter);
        menuAffichage->addAction(actionMaximized);
        menuAffichage->addAction(actionFullScreen);
        connect(actionQuitter,SIGNAL(triggered()),qApp,SLOT(quit()));
        connect(actionFullScreen,SIGNAL(triggered()),this,SLOT(showFullScreen()));
        connect(actionMaximized,SIGNAL(triggered()),this,SLOT(affichageStandard()));
        setMenuBar(menuBar);
    Je vous remercie d'avance pour votre aide

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Ton exemple ne créé qu'une bar menu? ou il y as d'autre widget de créé?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 42
    Par défaut
    Ce bout de code me sert uniquement pour le menu mais le programme que je fais contient plein d'autres Widgets.

    Si tu veux le code entier réalisant le design de l'interface le voici:

    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    /** Initialisation d'un Patient et des Parametres */
        m_patient = new Patient(this);
        m_parameters = new Parameters(this);
     
        /** Principaux Widgets ou buttons */
        m_button1 = new IconButton("qui.jpg",this);
        groupbox = new QGroupBox("Mode d'utilisation",this);
        mode_1 = new QRadioButton("Mode kV");
        mode_2 = new QRadioButton("Mode kV - mAs");
        groupbox2 = new QGroupBox("Angle de visée radiologique",this);
        profilView = new QRadioButton("Profil");
        faceView = new QRadioButton("Face");
        obliqueView = new QRadioButton("Oblique");
        maLed = new QLedIndicator(this);
        m_button11 = new QPushButton("Envoi", this);
        maLed2 = new QLedIndicator(this);
        m_button13 = new QPushButton("Source Ready", this);
        m_button14 = new QPushButton("Start", this);
        m_button15 = new QPushButton("Dose", this);
        m_button16 = new QPushButton("Quit", this);
        m_tete = new IconButton("tete.png",this);
        m_thorax = new IconButton("thorax.png",this);
        m_abdomen = new IconButton("abdomen.png",this);
        m_genou = new IconButton("genou.png",this);
        m_pied = new IconButton("pied.png",this);
        m_main = new IconButton("main.png",this);
        m_main2 = new IconButton("main.png",this);
        m_tension_plus = new QPushButton("+",this);
        m_tension_moins = new QPushButton("-",this);
        m_exposition_plus = new QPushButton("+",this);
        m_exposition_moins = new QPushButton("-",this);
        affichagePatient = new mylabel(this);
        affichageKv = new mylabel(this);
        affichageMaS = new mylabel(this);
        aec = new QComboBox(this);
        m_grille = new ToggleButton("grille_off.png","grille_on.png",this);
        m_grand_foyer = new ToggleButton("petit_foyer.png","grand_foyer.png",this);
     
        /** Paramètrage des layouts de gauche */
        m_tete->setObjectName("Tete");
        m_thorax->setObjectName("Thorax");
        m_abdomen->setObjectName("Abdomen");
        m_main->setObjectName("Main");
        m_genou->setObjectName("Genou");
        m_pied->setObjectName("Pied");
        affichagePatient->setText("Identifiant - Nom Prénom - Date de naissance - Sexe - Taille - Corpulence");
        affichageKv->setText("kV = " + m_parameters->getTension());
        affichageKv->setAlignment(Qt::AlignCenter);
        affichageKv->setStyleSheet("mylabel{background-color: white;}");
        affichageMaS->setText("mAs = " + m_parameters->getExposition());
        affichageMaS->setAlignment(Qt::AlignCenter);
        affichageMaS->setStyleSheet("mylabel{background-color: white;}");
        QPixmap pixmap0("aucun.png");
        QPixmap pixmap1("c.png");
        QPixmap pixmap2("gd.png");
        QIcon icon0(pixmap0);
        QIcon icon1(pixmap1);
        QIcon icon2 (pixmap2);
        QSize iconSizeAec(pixmap0.width(),pixmap0.height());
        aec->insertItem(0, icon0,"");
        aec->insertItem(1, icon1,"");
        aec->insertItem(2, icon2,"");
        aec->setIconSize(iconSizeAec);
        m_grille->setStyleSheet("ToggleButton{border: 3px solid gray; } :focus:pressed {background-color: transparent;} :checked {background-color: transparent;}");
        m_grand_foyer->setStyleSheet("ToggleButton{border: 3px solid gray; } :focus:pressed {background-color: transparent;} :checked {background-color: transparent;}");
     
     
        /** Layout de gauche */
        QVBoxLayout *top = new QVBoxLayout;
        QHBoxLayout *bottom = new QHBoxLayout;
        QGridLayout *bottom_center = new QGridLayout;
        QGridLayout *centre_gauche = new QGridLayout;
        QGridLayout *gauche = new QGridLayout;
        top->addWidget(m_button1,0,Qt::AlignCenter);
        top->addWidget(affichagePatient,0,Qt::AlignCenter);
        bottom_center->addWidget(affichageKv,0,0,1,2);
        bottom_center->addWidget(m_tension_moins,1,0);
        bottom_center->addWidget(m_tension_plus,1,1);
        bottom_center->addWidget(affichageMaS,0,2,1,2);
        bottom_center->addWidget(m_exposition_moins,1,2);
        bottom_center->addWidget(m_exposition_plus,1,3);
        bottom->addWidget(m_grand_foyer);
        bottom->addWidget(m_grille);
        bottom->addWidget(aec);
        bottom->addLayout(bottom_center);
        centre_gauche->addWidget(m_tete,0,2,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_thorax,1,2,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_main,2,0,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_main2,2,4,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_abdomen,3,2,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_genou,4,2,1,2,Qt::AlignCenter);
        centre_gauche->addWidget(m_pied,5,2,1,2,Qt::AlignCenter);
        gauche->addLayout(top,0,0,Qt::AlignCenter);
        gauche->addLayout(centre_gauche,1,0,Qt::AlignCenter);
        gauche->addLayout(bottom,2,0,Qt::AlignCenter);
     
     
        /** Paramètrage des widgets de droite */
        QHBoxLayout *useMode = new QHBoxLayout;
        useMode->addWidget(mode_1);
        useMode->addWidget(mode_2);
        groupbox->setLayout(useMode);
        mode_2->setChecked(true);
        QHBoxLayout *angleMode = new QHBoxLayout;
        angleMode->addWidget(faceView);
        angleMode->addWidget(profilView);
        angleMode->addWidget(obliqueView);
        groupbox2->setLayout(angleMode);
        faceView->setObjectName("face");
        faceView->setDisabled(1);
        profilView->setObjectName("profil");
        profilView->setDisabled(1);
        obliqueView->setObjectName("oblique");
        obliqueView->setDisabled(1);
     
     
        /** Layout de droite */
        QGridLayout *droite = new QGridLayout;
        droite->addWidget(groupbox,0,1,1,2,Qt::AlignHCenter);
        droite->addWidget(groupbox2,1,1,1,2,Qt::AlignHCenter);
        droite->addWidget(maLed,4,0);
        droite->addWidget(m_button11,4,1,1,2);
        droite->addWidget(maLed2,5,0);
        droite->addWidget(m_button13,5,1,1,2);
        droite->addWidget(m_button14,6,1,2,2);
        droite->addWidget(m_button15,8,1);
        droite->addWidget(m_button16,8,2);
     
     
     
        /** Layout principal */
        QHBoxLayout *mainLayout = new QHBoxLayout;
        mainLayout->addLayout(gauche);
        mainLayout->addLayout(droite);
     
        /** Application du layout */
        QWidget *appli = new QWidget();
        setCentralWidget(appli);
        appli->setLayout(mainLayout);
     
        QPalette *palette = new QPalette();
        palette->setColor(QPalette::Background,QColor(250,150,200));
        setPalette(*palette);
    Autrement, j'ai plusieurs autres fonctions pour arriver au bout du projet que je fais.

    Merci d'avance pour votre aide

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Essaie de voir si tu n'aurais pas une widget qui as pour parent ta mainwindows mais sans être géré par un layout.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 42
    Par défaut
    Les deux variables m_patient et m_parameters héritent de QWidget dans leur classe respective et ont pour parent la MainWindows, en revanche comme celles-ci renvoient des paramètres et des valeurs, elles n'apparaissent pas directement dans l'interface.

    J'accède à leurs variables privées que j'affiche dans l'interface avec des fonctions getVariablePrivée.

    Autrement, j'ai dans la classe Patient un affichade d'une boite de dialogue que j'appelle comme cela pour la fiche d'un patient en gros:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString fiche = QFileDialog::getOpenFileName(this->parentWidget(), "Ouvrir la fiche du patient", QString(), "Textes (*.txt)");
    Je ne sais pas si ça pourrait venir de là, mais il faudrait que je fasse des tests en supprimant ces deux classes pour peut-être trouver le problème.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Les deux variables m_patient et m_parameters héritent de QWidget dans leur classe respective et ont pour parent la MainWindows, en revanche comme celles-ci renvoient des paramètres et des valeurs, elles n'apparaissent pas directement dans l'interface.
    Pourquoi hériter de QWidget au lieu de QObject?

    Sinon, oui ca me semble une bonne piste. Ca ressemble a une widget transparente qui prend le focus de ta menu bar. Vu tes explications, ça pourrait être ces classes.

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

Discussions similaires

  1. Création d'une barre de menus
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2009, 16h49
  2. Lister les commandes d'une barre de menus
    Par fevec dans le forum IHM
    Réponses: 1
    Dernier message: 09/01/2008, 20h55
  3. Comment gerer une Barre de menus en connaissant le Handle
    Par blondelle dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/02/2007, 16h47
  4. Copier-coller une barre de menus entre 2 feuilles
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 27/05/2006, 11h34

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