![]() |
|
![]() ![]() ![]() |
|
gordmiand |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Если выводимая строка stroka инициализирована там же, где она и используется (в MyModul.cpp), то за счет использования QTextCodec из Main.cpp все выводится по-русски, а если я эту строку определяю в другом файле (хидере) и сюда его подключаю – иероглифы…как мне теперь это исправить? Пробовал использовать “локальный” перевод на русский язык типа :
ничего не получается – все равно иероглифы….и при UTF-8, KOI8-R – тоже самое…как быть??? Это сообщение отредактировал(а) gordmiand - 11.4.2010, 00:46 |
||||
|
|||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
пробовал перенести каким-то образом
в файл File1.h, но возникающая ошибка говорит о необходимости использования данного оператора в конструкторе/ деструкторе.... так как же быть с этим пресловутым русским текстом? |
|||
|
||||
КESТ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
может быть lineEdit->setText(tr(stroka)); ?
|
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
на
выдается ошибка no matching function for call to 'MainWindow::tr(QString&)'... |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
![]() |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
Вы с этим вопросом на форуме бьетесь черт знает сколько времени вместо того, чтобы подумать или почитать, как вообще работают QTextCodec-и...
Окей, инструкция по применению: сначала должен быть вызван setCodecForCStrings, а уже потом инициализироваться строка - тогда кодировка выставится верно. В вашем случае инициализация строк происходит до main и всего, что внутри нее. Что делать: а) вынести инициализацию строк в main после вызова кодека; б) перекодировать строки позже, как - читайте документацию. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
1. то есть этот русскоязычный текстовый массив надо инициализировать все-таки в main.h?
тогда зачем еще какие-то перекодировки (п. б)? если нельзя в проекте корректно отобразить русский текст из массива, описанного в отдельном хидере, то тогда я проще опишу этот массив в том модуле, где и использую сей текст... 2. что значит "перекодировать строки" (какие?)? если как-то так
то не работает... |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
1. Компилятору откровенно наплевать, в .h или в .cpp вы пишите, он компилирует в конечном счете один .cpp файл.
int main(int,char**){ QTextCodec ... QString array[]=... return 0; }; Или объявление array можно вынести наружу, но инициализировать все равно за QTextCodec 2. Когда бездумно пытаешься соединить разные кусочки, собранные на форуме, обычно так и получается, что ничего не работает. Мой вам совет: открыть для себя Qt Assistant и еще было бы неплохо учебник по с++ наверное. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
ну я и говорю, что инициализировать стринговый массив придется все-таки уже в самой программе (после кодека), а не в отдельном файле (хидере)...думал, что можно иначе - все сделать вне программы, а в ней только обращатсья к элементам массива....ну да ладно....
а все-таки - почему приведенный ниже код не работает (типа "принудительный" (то есть не в main для всего проекта) перевод на русскую раскладку)?
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
У тебя проблемы с пониманием действий методов. Читай документацию. fromUnicode() переводит строку в кодировке Unicode 5.0 в кодировку Windows-1251. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |