Russian Qt Forum
Май 04, 2024, 12:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: В QTable в Windows-е при получении данных из MySQL пишутся.  (Прочитано 14220 раз)
Druxa
Гость
« : Июнь 09, 2005, 13:07 »

Есть таблица Qtable, в неё запичваются данные из БД MySQL, в Linux-e всё отлично! А в Windows-е пишутся закарючки. Кодек подключил, все кодировки перебрал.

Что делал:
QTextCodec *rusCodec = QTextCodec::codecForName("KOI8-R");
QTextCodec::setCodecForTr(rusCodec);
...
QString name = query.value(0).toString();
...
aTable->setText(i, 0, tr(name));

Пробовал QTextCodec::setCodecForCStrings(rusCodec), не помогает.
Подскажи те пожалуйста решение проблемы, только не ссылайтесь пожалуйста на документацию.
Записан
BaltikS
Гость
« Ответ #1 : Июнь 09, 2005, 13:26 »

Как сделал я, не слишком парясь...

Table->setText(0,0,QString::fromLocal8Bit(mycur->value("field").toString().local8Bit().data()));

И самое удивительное...что это работает  Веселый
Записан
Druxa
Гость
« Ответ #2 : Июнь 09, 2005, 14:00 »

Я написал:
aTable->setText(i,0,QString::fromLocal8Bit(name.local8Bit().data()));
Закарючки не убрались. Можно подробрей текст программы? Какой при этом должен стоять QTextCodec? Если можно текст небьльшой программы. Очень нужно. Спасибо.
Записан
MaxWin
Гость
« Ответ #3 : Июнь 09, 2005, 16:39 »

Example: examples/qwerty/qwerty.cpp
Записан
Druxa
Гость
« Ответ #4 : Июнь 09, 2005, 16:54 »

Цитата: "MaxWin"
Example: examples/qwerty/qwerty.cpp

Я 3-й день изучаю Qt, если можно приведите маленький понятный пример в форме.
Записан
MaxWin
Гость
« Ответ #5 : Июнь 09, 2005, 17:28 »

Это маленький и понятный пример.
Не ленитесь.
Записан
Druxa
Гость
« Ответ #6 : Июнь 09, 2005, 17:38 »

Цитата: "MaxWin"
Это маленький и понятный пример.
Не ленитесь.

Мне завтра сдавать курсовую! Всё сделал, только в таблице из русского текста выходят закарючки, всё перепробовал. Пример посмотрел. Не выходит из MySQL-я в QTable русский буквы, хоть вешайся. Если не трудно приведите всё таки пример как из MySQL-я QString name = query.value(0).toString(); записать этот несчастный name в QTable на Русском! Пожалуйста.
Записан
Sergeich
Гость
« Ответ #7 : Июнь 09, 2005, 19:37 »

Как я понял ты запихал в базу русские строки с коевым кодеком.
Можешь попробовать их вынуть так:
Код:
  QTextCodec* codec = QTextCodec::codecForName( "KOI8-R" );
  QCString temp =  query.value(0).toCString();
  QString name = codec->toUnicode( temp );
  aTable->setText( i, 0, name ); // без всяких tr()
Записан
Sergeich
Гость
« Ответ #8 : Июнь 09, 2005, 19:45 »

Вообще-то, когда у меня была аналогичная проблема, я запихнул
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
перед созданием QApplication, все прекрасно работает и под виндой и под линухом.
Записан
Druxa
Гость
« Ответ #9 : Июнь 09, 2005, 20:10 »

Цитата: "Sergeich"
Как я понял ты запихал в базу русские строки с коевым кодеком.
Можешь попробовать их вынуть так:
Код:
  QTextCodec* codec = QTextCodec::codecForName( "KOI8-R" );
  QCString temp =  query.value(0).toCString();
  QString name = codec->toUnicode( temp );
  aTable->setText( i, 0, name ); // без всяких tr()

Так я пробовал, всё успешно компилируется, когда запускаю программу приложение не запускается, выдаётся ошибка "ams.exe - обнаружена ошибка. Приложение будет закрыто....". Может надо библиотеки какие особые подключить?
Записан
Druxa
Гость
« Ответ #10 : Июнь 09, 2005, 20:13 »

Цитата: "Sergeich"
Вообще-то, когда у меня была аналогичная проблема, я запихнул
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
перед созданием QApplication, все прекрасно работает и под виндой и под линухом.

Так то-же пробовал, не работает, опять закарючки, снова Грустный А как же мне не создавать объект QApplication? Без него никуда.
Записан
Sergeich
Гость
« Ответ #11 : Июнь 09, 2005, 20:19 »

1. Я писал что надо вызвать setCodec.... перед созданием QApplication, а не то что не надо создавать QApplication.
2. А валиться скорей всего из-за того что QTextCodec::codecForName( "KOI8-R" ) возвращает 0. Посмотри в отладчике.
Записан
Druxa
Гость
« Ответ #12 : Июнь 09, 2005, 20:26 »

Цитата: "Sergeich"
1. Я писал что надо вызвать setCodec.... перед созданием QApplication, а не то что не надо создавать QApplication.
2. А валиться скорей всего из-за того что QTextCodec::codecForName( "KOI8-R" ) возвращает 0. Посмотри в отладчике.

Не валится не из-за QTextCodec::codecForName("KOI8-R"), а с отладчиком у меня пробема к сожалению, надо VC переустанавливать.
Записан
Druxa
Гость
« Ответ #13 : Июнь 09, 2005, 20:47 »

Цитата: "Sergeich"
Вообще-то, когда у меня была аналогичная проблема, я запихнул
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R"));
перед созданием QApplication, все прекрасно работает и под виндой и под линухом.

Попробовал ставить перед QApplication, не работает.
У меня версия Qt 3.3.3, может в ней дело? Самое интересное, что в Линухе работает!!! Причём без всяких toUnicode. Просто  QTextCodec* codec = QTextCodec::codecForName("KOI8-R"); QTextCodec::setCodecForTr(codec); и всё. А в Windows перебрал все кодировки ничего не работает, когда делаю через toUnicod, приложение не запускается, при том компилируется нормально!!! Что делать? Подскажите?
Записан
Druxa
Гость
« Ответ #14 : Июнь 09, 2005, 20:55 »

Приложение валится из-за QString name = codec->toUnicode( temp );
Если эту строку убрать запускается.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 20.