Проблемы при конвертации в UTF-8 в Qt

Я пытаюсь показать персидскую строку в Qt:

QMessageBox msg;

QString str = "یا حسین";
msg.setText(QString::fromUtf8(str));
msg.exec();

но он показывает следующую ошибку:

/home/msi/Desktop/VoMail Project/Project/VoMail-build-desktop-Qt_4_8

QMessageBox msg;

QString str = "یا حسین";
msg.setText(QString::fromUtf8(str));
msg.exec();
in_PATH__System__Release/../VoMail/mainwindow.cpp:40: ошибка: нет соответствующей функции для вызова 'QString::fromUtf8(QString&)'

Я хочу использовать строковую переменную, а не строку напрямую.

Как я могу преобразовать переменную QString в Utf8?


person BattleTested_закалённый в бою    schedule 03.11.2014    source источник


Ответы (2)


Как видно здесь, QString::fromUtf8() не принимает аргумент типа QString. Вы должны дать ему const char *, чтобы вы могли переписать его так:

QMessageBox msg;

QString str = QString::fromUtf8("یا حسین");
msg.setText(str);
msg.exec();
person phantom    schedule 03.11.2014
comment
в Qt версии 2 невозможно установить неконстантный параметр в методе fromUtf8(). вместо этого мы можем сделать это с помощью оператора QString::fromUtf8("یا علی");. - person BattleTested_закалённый в бою; 22.06.2016

нехорошо так писать

использовать это должно быть лучше

 QString str(tr("ya hossein");

и используйте лингвист и добавьте файл персидского перевода в свой проект http://qt-project.org/doc/qt-4.8/linguist-translators.html

и если вы не хотите использовать это, вы должны быть уверены, что ваша IDE или редактор кода (например, qtcreator) используют utf8 для сохранения файлов и просто используют

 QString str("یا حسین");

это должно быть нормально, я проверял это много раз

person danics    schedule 03.11.2014