QString을 std :: string으로 변환하는 것에 대한 여러 게시물을 보았습니다. 간단해야합니다. 하지만 어쨌든 나는 오류가 발생했습니다.QString을 std :: string으로 변환하십시오.
내 코드는 cmake (VS express를 사용하고 있습니다)를 사용하여 VS 프로젝트로 컴파일되므로 QT 라이브러리에는 아무런 문제가 없으며이 부분 외에도 GUI가 작동합니다.
일부 개체의 이름을 보유하고있는 QComboBox cb
과 내가 찾고있는 개체의 이름을 지정할 수있는 QLineEdit lineEdit
이 있습니다. 그것은 QComboBox
및 lineEdit
인수를 인수로 사용하여 이동 단추를 누를 때 테스트되고 작동하는 함수를 실행해야합니다.
여기 이동 버튼을 클릭했을 때의 코드입니다 :
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());
}
첫 번째 줄, str
를 작성, 잘 작동합니다. I.E. 라이브러리 함수 또는 toStdString()
에는 아무런 문제가 없습니다. 하지만 내 함수를 실행하면 프로그램이 중단되고 함수가 아닌 이유로 변환하려고하는 부분 때문에 발생합니다. lineEdit->text().toStdString()
.
lineEdit
상자에 "test"라는 단어를 쓸 때만 나타납니다. 유니 코드에 대한 다른 대답을 보았습니다. 간략하게 살펴 보았습니다. 사용자가 유니 코드가 아니어야하는 '_'및 '.'을 제외하고 lineEdit
상자에 특수 문자를 넣지 않을 것이라고 가정 할 수 있습니다.
또한 문제가되는지는 모르겠지만 QT4 또는 QT5를 사용하고 있는지 완전히 잊어 버립니다. VS, Cmake 및 QT의 다른 버전을 모두 함께 사용하려고 노력하는 것이 절망적이게되었습니다. (저는 인턴이며 모든 것을 직접 설정해야했습니다.) 내 cmakelists.txt에'FIND_PACKAGE (Qt4 REQUIRED)'라고 써 있습니다. 사실, QT4와 QT5 사이에 내가하는 일이 다르다고 생각하지 않습니다. –
그래, 무슨 일이 있었는지 모르겠다. 이전에'toUtf8()을 시도했을 때.constData()', 그것은 작동하지 않았고 유니 코드가 필요 없기 때문에 그것을 사용하고 싶지 않았습니다. 나는 단지 "시험"을 쓰고 있었다. 하지만 이제는'toUtf8(). constData()'를 사용할 때 제대로 작동하고 제 기능을 수행합니다. 하지만 왜'toStdString()'을 사용할 수 없는지 아는 사람이 있습니까? 차라리이 간단한 유지. –
나는 cout 문이 잘못된 문자열을 출력했다고 가정하고 있습니까? –