void Fenetre::changeAttributArc() { Graphe* graph=(Graphe*)graphe.getGraph(); vector<Arete*> listeArcs=graph->getListeArcs(); //Création d'une boîte de dialogue QDialog fenDiag; //Boutons OK et Annuler QHBoxLayout *layoutButton=new QHBoxLayout; QPushButton *okFenDiag=new QPushButton("&OK"); QPushButton *cancFenDiag=new QPushButton("&Annuler"); layoutButton->addWidget(okFenDiag); layoutButton->addWidget(cancFenDiag); connect(okFenDiag, SIGNAL(clicked()), &fenDiag, SLOT(accept())); connect(cancFenDiag, SIGNAL(clicked()), &fenDiag, SLOT(reject())); //Création de la liste des arcs QComboBox *boxArcs=new QComboBox; for (int i = 0 ; i < listeArcs.size(); i++){ boxArcs->addItem(listeArcs[i]->getDepart()->getNom()+"->"+listeArcs[i]->getArrivee()->getNom()); } //Ajout de tout ça à la fenêtre de dialogue QVBoxLayout *layoutFenetre=new QVBoxLayout; layoutFenetre->addWidget(boxArcs); layoutFenetre->addLayout(layoutButton); fenDiag.setLayout(layoutFenetre); //On affiche la fenêtre fenDiag.setVisible(true); fenDiag.setModal(true); //On traîte la demande if(fenDiag.exec()){ //Si on a cliqué sur ok ! Arete *arcModif=listeArcs[boxArcs->currentIndex()]; //On demande ce qu'on veut modifier à ce sommet QDialog fenDiag2; //On réutilise les mêmes boutons qu'avant disconnect(okFenDiag, SIGNAL(clicked()), &fenDiag, SLOT(accept())); disconnect(cancFenDiag, SIGNAL(clicked()), &fenDiag, SLOT(reject())); connect(okFenDiag, SIGNAL(clicked()), &fenDiag2, SLOT(accept())); connect(cancFenDiag, SIGNAL(clicked()), &fenDiag2, SLOT(reject())); QComboBox *boxOptions=new QComboBox; QStringList options; options<<"Modifier le départ"<<"Modifier l'arrivée"; boxOptions->addItems(options); QVBoxLayout *layoutFenetre2=new QVBoxLayout; layoutFenetre->removeItem(layoutButton); layoutFenetre2->addWidget(boxOptions); layoutFenetre2->addLayout(layoutButton); fenDiag2.setLayout(layoutFenetre2); fenDiag2.setVisible(true); fenDiag2.setModal(true); if(fenDiag2.exec()){ switch(boxOptions->currentIndex()){ case 0 : { modifArcDepart(arcModif); break; } case 1 : { modifArcArrivee(arcModif); break; } } } } }