La conversion de QString à std::string
J'ai vu plusieurs autres postes sur la conversion de QString à std::string, et il devrait être simple. Mais de toute façon j'obtiens une erreur.
Mon code est compilé en un VS projet en utilisant cmake (je suis en utilisant VS express), donc il n'y a pas de problème avec les bibliothèques QT, et l'interface graphique que j'ai écrit des œuvres en dehors de cette partie.
J'ai un QComboBox cb
qui détient les noms de certains objets, et un QLineEdit lineEdit
qui me permet de spécifier le nom de l'objet que je recherche. Il doit exécuter une fonction qui est testé et de travail lorsque j'appuie sur un bouton aller, avec l'apport de l' QComboBox
et la lineEdit
comme arguments.
Voici le code lorsque le bouton est cliqué:
void gui::on_go_clicked(){
std::string str(cb->currentText().toStdString());
//std::cout << str << "\n";
//QString qstr = lineEdit->text();
//std::cout<<lineEdit->text().toStdString();
updateDB(str, lineEdit->text().toStdString());
}
La première ligne, la création de str
, fonctionne très bien. I. E. il n'y a pas de problème avec les fonctions de la bibliothèque ou toStdString()
. Mais lorsqu'il exécute ma fonction, le programme des pauses, et ce n'est pas parce que de la fonction, c'est à cause de la partie où il essaie de convertir lineEdit->text().toStdString()
.
Ce n'est que lorsque j'écris le mot "test" dans la lineEdit
boîte. J'ai vu d'autres réponses à parler d'unicode, que j'ai essayé brièvement, mais je peux supposer que l'utilisateur ne sera pas mettre de caractères spéciaux dans le lineEdit
boîte, sauf '_' et '.', ce qui ne devrait pas l'unicode.
- Aussi, je ne sais pas si ça compte, mais j'ai totalement oublier, si j'utilise QT4 ou QT5. J'ai complètement foiré en essayant d'obtenir les différentes versions de VS, Cmake, QT et de travailler tous ensemble (je suis stagiaire et avait pour tout mettre en place moi-même). Dans mon cmakelists.txt il dit
FIND_PACKAGE(Qt4 REQUIRED)
. En fait, je ne pense pas que tout ce que je fais est différent entre QT4 et QT5... - Bon, je ne sais pas ce qui s'est passé. Plus tôt, quand j'ai essayé
toUtf8().constData()
, il n'a pas de travail et je ne voulais pas l'utiliser parce que je n'ai pas besoin d'unicode. J'avais juste écrit "test". Mais maintenant, quand j'utilisetoUtf8().constData()
, il fonctionne très bien, et arrive à ma fonction. Mais personne ne sait pourquoi je ne peux pas utilisertoStdString()
? Je préfère garder cela simple. - Je suis en supposant que le cout de phrase, la mauvaise chaîne de caractères?
Vous devez vous connecter pour publier un commentaire.
Simplifier votre test et vérifier que QString.toStdString() est-ce que vous attendez:
Donc:
Est le résultat produit?
Si c'est le cas, cela signifie que votre fonction a un problème. Comment le updateDB look (signature de fonction?)? Quels sont ses apports?
De Qt fichiers d'aide:
Par conséquent, si vous n'avez pas modifié les paramètres régionaux de votre widget (lineEdit), ou c'est les parents, les choses devrait fonctionner (ou vous devriez voir quelque chose avec perte d'information). J'ai utilisé cette fonction plusieurs fois sans problème...