crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QString в wchar_t*/char* для MathGL
Fess
  опции профиля:
сообщение 16.9.2010, 16:56
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 12.9.2010
Пользователь №: 2030

Спасибо сказали: 0 раз(а)




Репутация:   0  


Моя проблема наверняка решалась не раз, помогите!
Нужно на график MathGL вывести текст.
Английский текст выводится замечательно, когда tr возвращает русский перевод вылезают кракозябры.
Испробовал кучу вариантов, но безуспешно. Пусть будет так:
QString Text(QObject::tr("Header"));
wchar_t* RusText = new wchar_t[100000];
int Count = Text.toWCharArray(RusText);
pGraph->Labelw('x',RusText);
pGraph->Text(mglPoint(),RusText);

Нужно получить из русского текста в QString русский текст в wchar_t или char, которые понимает MathGL.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2010, 17:03
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Fess @ 16.9.2010, 20:56) *
которые понимает MathGL.
а он в какой кодировке понимает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fess
  опции профиля:
сообщение 16.9.2010, 18:08
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 12.9.2010
Пользователь №: 2030

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 16.9.2010, 20:03) *
Цитата(Fess @ 16.9.2010, 20:56) *
которые понимает MathGL.
а он в какой кодировке понимает?

MathGL FAQ
Цитата
Как мне вывести текст на русском/испанском/арабском/японском и т.д.?

Стандартный путь состоит в использовании кодировки UTF-8 для вывода текста. Кроме того, все функции вывода текста имеют интерфейс для 8-битных (char *) строк. Однако в последнем случае Вам может потребоваться установить используемую в исходном тексте локаль. Например, для русского языка в кодировке CP1251 можно использовать setlocale(LC_CTYPE, "ru_RU.cp1251"); (под MS Windows имена локали другие – setlocale(LC_CTYPE, "russian_russia.1251")). Настоятельно не рекомендую использовать константу LC_ALL, поскольку при этом меняется и формат чисел (в частности, десятичная точка), что может, например, вызвать сложности (неудобство) при написании формул и чтении текстовых файлов. Например, программа ожидает ‘,’ в качестве разделителя целой и дробной части, а пользователь вводит ‘.’.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 16.9.2010, 19:28
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


http://forum.vingrad.ru/forum/topic-203624.html
http://lists.trolltech.com/qt-interest/200...ead00839-0.html

И еще посмотри в сторону функции QString::toStdWString она правда возвращает wstring, но сконвертировать в wchar_t не трудно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fess
  опции профиля:
сообщение 16.9.2010, 20:32
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 12.9.2010
Пользователь №: 2030

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(molchanoviv @ 16.9.2010, 22:28) *
http://forum.vingrad.ru/forum/topic-203624.html
http://lists.trolltech.com/qt-interest/200...ead00839-0.html

И еще посмотри в сторону функции QString::toStdWString она правда возвращает wstring, но сконвертировать в wchar_t не трудно

К сожалению, ничего не помогло :(
std::wstring wstr = Text.toStdWString();
pGraph->Text(mglPoint(),wstr.data());

std::wstring wstr = Text.toStdWString();
pGraph->Text(mglPoint(),wstr.c_str());

wchar_t buf[100];
buf[Text.toWCharArray(buf)]=0;
pGraph->Text(mglPoint(),buf);

или ничего, или кракозябры.
Англ. текст превосходно выводится во всех случаях.
wstr, однако в отладчике содержит правильный русский текст
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.7.2020, 1:11