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 :

No matching function for call to 'QString::toLower'( const char[4])

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Points : 61
    Points
    61
    Par défaut No matching function for call to 'QString::toLower'( const char[4])
    Bonjour à toutes et tous .

    Je me suis lancé dans une entreprise " importante pour moi ". Je suis un peu dyslexique et je mélange les termes et me perd .

    J'ai découvert sur Developpez.com un code de gestion d'une classe avec la possibilité de rajouter , un élève , une colonne (geo,math,français.)et de calculer automatiquement la moyenne de chaque élève et son classement .

    J'ai adapté ce code en Joueurs , Parties , Scores .

    Pour certaines parties c'est relativement facile , mais .... je mélange les attributs .. et ...

    Puis-je vous demander de l'aide , car seul je doute d'y parvenir .

    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
     
    void Fenetre::action(QStandardItem *objet) {
            if(objet->column() == 0) {
                    QString nom = objet->text();
                    majPremierCaractere(nom);
                    if(nom != objet->text()) {
                            disconnect(modele, SIGNAL(itemChanged(QStandardItem*)),this , SLOT(action(QStandardItem*)));
                            objet->setText(nom); }
                     groupe.changeNom(objet->row(),nom);
     
            if(objet->column() > 2) {
                    QString texte = objet->text();
                    double score;
                    bool ok;
     
                    score = texte.toDouble(&ok);
                    if(ok) {
                            if(score >= 0 && score <= 1000) {
                                groupe.changeScore(objet->row(),objet->column() -2, objet->text());
                                    groupe.trierParScore();
                                    groupe.trier();
                                    for(int i = 0; i < groupe.getSize(); i++) {
                                            /*modele->setItem(i,2, new QStandardItem(QString::number(groupe.getMoyenne(objet->row())))); }
                            }
                            else {*/ // Code original . Je désirerais mettre Total à la place
                                    if(texte.isEmpty()) {
                                            groupe.changeScore(objet->row(), objet->column() -3,""); }
                                    else if(texte == "Abs") {
                                            groupe.changeScore(objet->row(), objet->column() -3,texte); }
                                    else if(texte.toLower("abs")) {
                                            disconnect(modele, SIGNAL(itemChanged(QStandardItem*)),this , SLOT(action(QStandardItem*)));
                                             objet->setTexte("Abs");
                                            groupe.changeScore(objet->row(),objet->column() -3, texte);
                                             connect(modele, SIGNAL(itemChanged(QStandardItem*)),this , SLOT(action(QStandardItem*))); }
                                                    else {
                                                   disconnect(modele, SIGNAL(itemChanged(QStandardItem*)),this , SLOT(action(QStandardItem*)));
                                                    objet->setText(QString(""));
                                                    QMessageBox::critical(this, QString("Avertissement"), QString("Numero compris entre 1 et 1000"));
                                                    connect(modele, SIGNAL(itemChanged(QStandardItem*)),this , SLOT(action(QStandardItem*))); }
                                                    }
                                            }
                                    }
            }
    } }
    Erreur ligne 29/30

    J'ai créé 3 Colonnes et 0 lignes . Nom Total Classement
    Rajout de Partie1, Partie2,....

    C'est la que commence mes problèmes .

    Merci .

    Cordialement.

  2. #2
    Membre émérite
    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 : 38
    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
    Points : 2 834
    Points
    2 834
    Par défaut
    Il suffit de lire l'erreur... La classe QString ne possède pas de fonction toLower(const char*), tu regardes donc la doc : http://qt.developpez.com/doc/4.7/qstring/#tolower
    Et effectivement, la fonction toLower ne prends pas d'argument, elle met en minuscule une copie de la chaîne contenue par l'objet QString.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Points : 61
    Points
    61
    Par défaut no matching fuction for call to 'Joueur::Joueur(QString&,QString&)'
    Bonsoir à toutes et tous .

    Je remets ce message au gout du jour car , je ne parviens pas à faire fonctionner certaines parties de mon projet correctement , j'ai pour annulé le message d'erreur amputé le code de départ qui me sert de modèle .

    Les messages :
    no matching function for call to 'Joueur::Joueur(QString&,QString&)'
    candidates are:Joueur::Joueur(QString)
    Joueur::Joueur(const Joueur&) .

    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
    void Fenetre::ouvrir() {
        QString nomFichierSav = nomFichier;
        nomFichier = QFileDialog::getOpenFileName(this, QString("Sélectionnez un fichier"),QString(),"Fichiers *.txt;;Tous les fichiers *");
        if(nomFichier.isEmpty()) {
            nomFichier = nomFichierSav;
        }
        else {
            QFile fichier(nomFichier);
            if(fichier.open(QIODevice::ReadOnly |  QIODevice::Text)) {
                groupe.clearAllJoueur();
                listeHeaderFollow.clear();
                modele->clear();
     
                int compteur = 0;
                QString texte;
                QStringList data;
                QTextStream flux(&fichier);
     
                while(!flux.atEnd()) {
                    texte = flux.readLine();
                    if(compteur == 0) {
                        listeHeaderFollow = texte.split(":");
                        compteur++;
                    }
                    else {
                        data = texte.split(":");
                        Joueur *joueur = new Joueur(data[0],data[1]);
                        for(int i = 2; i < data.size(); i++) {
                            joueur->insertColonne(data[i]);
                        }
                        groupe.addJoueur(joueur);
                    }
                }
                fichier.close();
                groupe.trierParScore();
                groupe.trier();
                disconnect(modele , SIGNAL(itemChanged(QStandardItem*)),this ,SLOT(action(QStandardItem*)));
                modele->setHorizontalHeaderLabels(listeHeader + listeHeaderFollow);
                chargerTableDansModele();
                if(!actionEnregistrer->isEnabled()) {
                    actionEnregistrer->setEnabled(true);
                    connect(modele , SIGNAL(itemChanged(QStandardItem*)),this ,SLOT(action(QStandardItem*)));
                }
                else {
                    QMessageBox::critical(this,"Erreur","Impossible de charger les informations du fichier" + nomFichier);
                }
            }
        }
    }
    C'est la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                  else {
                        data = texte.split(":");
       ===>     Joueur *joueur = new Joueur(data[0],data[1]);  <===????
                        for(int i = 2; i < data.size(); i++) {
                            joueur->insertColonne(data[i]);
                        }
                        groupe.addJoueur(joueur);
                    }
    Pour enlever le message d'erreur je supprime( ,data[1] ) .

    Merci .

    Cordialement.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2012, 14h34
  2. No matching function for call to 'Joueur::Joueur'
    Par Go'Gaule dans le forum Débuter
    Réponses: 4
    Dernier message: 02/07/2011, 07h50
  3. Réponses: 8
    Dernier message: 09/07/2010, 16h02
  4. no matching function for call
    Par pimousse280187 dans le forum Linux
    Réponses: 1
    Dernier message: 06/06/2009, 21h08

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