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 :

Problème de QComboBox

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut Problème de QComboBox
    Salut !!!
    Comment faire pour choisir quelle est la valeur de QComboBox que je veux quelle soit être affichée dans le chargement de l'interface.
    J'ai lu la documentation et j'ai trouvé cette méthode "setItemText(int index, Qstring text)" tel que j'ai utilisé comme index 0 pour que la valeur soit affichée en premier mais elle n'aboutie à rien.
    Que dois-je faire ? Merci d'avance
    NB: les valeurs de mon QcomboBox sont chargés depuis une base.

  2. #2
    Membre éprouvé
    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 : 40
    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
    Par défaut
    Tu remplis ta combobox et ensuite tu sélectionnes un des items qu'elle contient en tant qu'item courant avec cette fonction :
    http://qt.developpez.com/doc/4.7/qco...rentindex-prop

    Si tu ne connais pas l'index de l'item que tu veux afficher, tu peux le chercher avec cette fonction :
    http://qt.developpez.com/doc/4.7/qcombobox/#findtext

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut
    Citation Envoyé par ymoreau Voir le message
    Tu remplis ta combobox et ensuite tu sélectionnes un des items qu'elle contient en tant qu'item courant avec cette fonction :
    http://qt.developpez.com/doc/4.7/qco...rentindex-prop

    Si tu ne connais pas l'index de l'item que tu veux afficher, tu peux le chercher avec cette fonction :
    http://qt.developpez.com/doc/4.7/qcombobox/#findtext
    Merci pour votre réponse.
    Le problème c'est que mon comboBox est lié par un slot à un autre comboBox_Global c'est à dire lorsque je change la valeur de mon ComboxBox_Global, la valeur de comboBox n'est pas changé
    Comme s'il n'y a pas une synchronisation entre eux.
    Voilà le code :
    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
    this->model = new QSqlQueryModel();
               model->setQuery("SELECT  Nom FROM Projet.dbo.Produit");
               ui->comboBox->setModel(model);
    this->model2 = new QSqlQueryModel();
                      model2->setQuery("SELECT DISTINCT N_Four FROM Projet.dbo.Produit");
                      ui->comboBox_2->setModel(model2);
     
     
                      QSqlQuery query5;
                      query5.prepare("SELECT  N_Four FROM Projet.dbo.Produit WHERE Nom=:nom");
                      query5.bindValue(":nom", ui->comboBox->currentText());
                      if (query5.exec() && query5.next()) {
                          ui->comboBox_2->setItemText(0,query5.value(0).toString());
     
                      }
    void fiche_article::on_comboBox_currentIndexChanged(const QString &arg1)
    {
     
     
        QSqlQuery query5;
        query5.prepare("SELECT  N_Four FROM Projet.dbo.Produit WHERE Nom=:nom");
        query5.bindValue(":nom", ui->comboBox->currentText());
        if (query5.exec() && query5.next()) {
            ui->comboBox_2->setItemText(0,query5.value(0).toString());
     
        }

  4. #4
    Membre éprouvé
    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 : 40
    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
    Par défaut
    Je ne suis pas sûr de bien comprendre ce qui ne fonctionne pas. S'il faut synchroniser une combobox par rapport au choix d'une autre, il faut utiliser le signal currentIndexChanged comme ça semble être le cas dans ton code. Que tu changes la valeur par interaction graphique ou par programmation le signal est émis.

    Par contre je ne comprends pas ce que tu fais ligne 13 et 24, tu changes le texte du premier item de ta combobox, dans quel but ? Est-ce que tu ne veux pas plutôt totalement mettre à jour les items de la combobox ou bien sélectionner un item déjà présent dans la combobox ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut
    C'est simple. Je vais explique d'une manière :
    Dans ma base de données :
    Table Produit :
    Nom N_Four
    X 10
    Y 15
    Z 20


    Lors de l'affichage de l'interface :
    ComboBox : X
    ComboBox_2 : 10

    Si je change la valeur de ComboBox :
    ComboBox : Y
    ComboBox_2 : 10

    Alors, il n'y aura pas un changement.

    A propos ligne 13 et 24, c' est rien une méthode que j'ai essayé

  6. #6
    Membre éprouvé
    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 : 40
    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
    Par défaut
    Comme je l'ai dit plus haut. Tu as bien commencé mais c'est le corps de ta fonction on_comboBox_currentIndexChanged(const QString &arg1) qui ne fait pas ce que tu veux je suppose. Dans cette fonction il faudrait que tu mettes à jour ta combobox_2 en fonction de la valeur de arg1.

    Si tu veux changer les items de la liste, tu la vides et tu la remplis avec les bonnes valeurs. Si tu veux seulement changer quel item est sélectionné, tu utilises
    http://qt.developpez.com/doc/4.7/qco...rentindex-prop
    http://qt.developpez.com/doc/4.7/qcombobox/#findtext

    Prends le temps de regarder la doc de QComboBox, tu verras qu'il y a toutes les fonctions, les signaux et les slots dont tu as besoin.

Discussions similaires

  1. Problème avec QComboBox, layout et changement de map
    Par Far_Away dans le forum Débuter
    Réponses: 1
    Dernier message: 11/02/2011, 23h49
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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