2014-11-03 1 views
0

Я пытаюсь показать персидская строку в Qt:Проблемы преобразования в UTF-8 в Qt

QMessageBox msg; 

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

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

/home/msi/Desktop/VoMail Project/Project/VoMail-build-desktop-Qt_4_8_1_in_PATH__System__Release/../VoMail/mainwindow.cpp:40: error: no matching function for call to 'QString::fromUtf8(QString&)'

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

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

ответ

0

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

QMessageBox msg; 

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

Надеются, что это помогло, удачи!

+0

в Qt версии 2, не может установить параметр non-const в 'fromUtf8()' метод. вместо этого мы можем сделать это с помощью 'QString :: fromUtf8 (" یا علی ");' statement. –

1

его не хорошая идея написать подобное

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

QString str(tr("ya hossein"); 

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

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

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

все должно быть в порядке, я тестировал, что столько раз

 Смежные вопросы

  • Нет связанных вопросов^_^