Я видел несколько других сообщений о преобразовании QString в std :: string и должен быть простым. Но почему-то я получаю сообщение об ошибке.Преобразование QString в std :: string
Мой код скомпилирован в VS-проект с использованием cmake (я использую VS express), поэтому проблем с библиотеками QT нет, а графический интерфейс, который я написал, работает помимо этой части.
У меня есть QComboBox cb
, который содержит имена для некоторых объектов и QLineEdit lineEdit
, что позволяет мне указать имя объекта, который я ищу. Он должен запускать функцию, которая проверена и работает, когда я нажимаю кнопку go, с вводом от 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
, работает отлично. И.Е. нет проблем с библиотечными функциями или toStdString()
. Но когда он выполняет мою функцию, программа прерывается, и это не из-за функции, из-за той части, где она пытается конвертировать lineEdit->text().toStdString()
.
Это только когда я пишу слово «тест» в поле lineEdit
. Я видел другие ответы, рассказывающие об unicode, которые я попытался кратко, но могу предположить, что пользователь не будет помещать какие-либо специальные символы в поле lineEdit
, запрещая «_» и «.», Что не должно быть unicode.
Кроме того, я не знаю, имеет ли это значение, но я полностью забываю, пользуюсь ли я QT4 или QT5. Я безнадежно перепутался, пытаясь развить разные версии VS, Cmake и QT, чтобы все работали вместе (я стажер, и мне пришлось все это самостоятельно). В моем cmakelists.txt сказано 'FIND_PACKAGE (Qt4 REQUIRED)'. На самом деле, я не думаю, что что-то, что я делаю, отличается от QT4 и QT5 ... –
Хорошо, я не знаю, что произошло. Раньше я пытался «toUtf8().constData() ', это не сработало, и я не хотел его использовать, потому что мне не нужен юникод. Я просто писал «тест». Но теперь, когда я использую 'toUtf8(). ConstData()', он отлично работает и переходит к моей функции. Но кто-нибудь знает, почему я не могу использовать 'toStdString()'? Я бы предпочел сохранить это просто. –
Я предполагаю, что инструкция cout напечатала неправильную строку? –