QT et QStringListModel

QT et QStringListModel - C++ - Programmation

Marsh Posté le 11-08-2008 à 22:37:24    

Bonjour

 

Je viens de me mettre à QT et j'ai un petit soucis. Donc j'essaie de faire un menu de selection assez classique.
Pour le moment j'ai quelque chose qui ressemble à ça:

 

http://www.zimagez.com/miniature/pbmvc.jpg

 


Ce que j'essaie de faire c'est que lorsque l'on clique sur une fleche ça transmet l'élément d'un coté et de l'autre. Le problème c'est quand je clique il se passe rien alors que la variable elementSelectionne contient bien quelque chose.

 

Voici mon code

 


Fichier FenPrincipal.cpp

Code :
  1. #include "FenPrincipale.h"
  2. FenPrincipale::FenPrincipale()
  3. {
  4.     //Zone Gauche
  5.     listePaysGauche = new QStringList;
  6.     *listePaysGauche << "France" << "Espagne" << "Italie" << "Portugal" << "Suisse";
  7.     modeleGauche = new QStringListModel(*listePaysGauche);
  8.     vueGauche = new QListView ;
  9.     vueGauche->setModel(modeleGauche);
  10.     vueGauche->setSelectionMode(QAbstractItemView::ExtendedSelection);
  11.     //Zone milieu pour boutons
  12.     flecheDroite = new QPushButton(">" );
  13.     flecheDoubleDroite = new QPushButton(">>" );
  14.     flecheGauche = new QPushButton("<" );
  15.     flecheDoubleGauche = new QPushButton("<<" );
  16.     QVBoxLayout *layoutbouton = new QVBoxLayout;
  17.     layoutbouton->addWidget(flecheDroite);
  18.     layoutbouton->addWidget(flecheDoubleDroite);
  19.     layoutbouton->addWidget(flecheGauche);
  20.     layoutbouton->addWidget(flecheDoubleGauche);
  21.     //Zone droite
  22.     listePaysDroite = new QStringList;
  23.     listePaysDroite->append("Russie" );
  24.     modeleDroite = new QStringListModel(*listePaysDroite);
  25.     vueDroite = new QListView ;
  26.     vueDroite->setModel(modeleDroite);
  27.     vueDroite->setSelectionMode(QAbstractItemView::ExtendedSelection);
  28.     //Layout principal
  29.     QHBoxLayout *layoutCentral = new QHBoxLayout;
  30.     layoutCentral->addWidget(vueGauche);
  31.     layoutCentral->addLayout(layoutbouton);
  32.     layoutCentral->addWidget(vueDroite);
  33.     setLayout(layoutCentral);
  34.    connect(flecheDroite, SIGNAL(clicked()), this, SLOT(clicFlecheDroite())); 
  35. }
  36. void FenPrincipale::clicFlecheDroite()
  37. {
  38.     QItemSelectionModel *selection = vueGauche->selectionModel();
  39.     QModelIndexList listeSelections = selection->selectedIndexes();
  40.     QString elementsSelectionnes;
  41.     for (int i = 0 ; i < listeSelections.size() ; i++)
  42.     {
  43.         QVariant elementSelectionne = modeleGauche->data(listeSelections[i], Qt::DisplayRole);
  44.         listePaysDroite->append(elementSelectionne.toString());
  45.     }
  46. }
  

Fichier FenPrincipal.h

Code :
  1. #ifndef FENPRINCIPALE_H_
  2. #define FENPRINCIPALE_H_
  3. #include <QApplication>
  4. #include <QtGui>
  5. class FenPrincipale : public QWidget
  6. {
  7.     Q_OBJECT
  8.     public:
  9.         FenPrincipale();
  10.     private slots:
  11.        void clicFlecheDroite();
  12.     private:
  13.      QListView *vueGauche;
  14.      QStringListModel *modeleGauche;
  15.      QListView *vueDroite;
  16.      QStringListModel *modeleDroite;
  17.      QStringList *listePaysGauche;
  18.      QStringList *listePaysDroite;
  19.      QPushButton *flecheDroite;
  20.      QPushButton *flecheDoubleDroite;
  21.      QPushButton *flecheGauche;
  22.      QPushButton *flecheDoubleGauche;
  23. };
  24. #endif /* FENPRINCIPALE_H_ */



Message édité par Digaboy le 11-08-2008 à 23:06:20
Reply

Marsh Posté le 11-08-2008 à 22:37:24   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed