crossplatform.ru

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

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
> Кодировки в QT, Не работает отображение русских букв
Гость_Alex_*
сообщение 7.1.2009, 19:39
Сообщение #1





Гости








    


Кодек назначаю

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

и при сборке имею

main.cpp:15: ошибка: неполный тип ‘QTextCodec’ использован во вложенном спецификаторе имени

Без кодека никакие русские буквы в кодировке UTF-8 в QLineEdit на отображаются, только барабер какой-то.

Буду признателен за помощь - Qt только осваиваю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 7.1.2009, 19:45
Сообщение #2


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

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




Репутация:   3  


а чуть больше кода можешь показать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 19:51
Сообщение #3


Студент
*

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

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




Репутация:   0  


int main(int argc, char * argv[], char * env[]){
QApplication app(argc,argv,env);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
MyWidget * widget = new MyWidget;
widget->show();
return app.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 7.1.2009, 21:02
Сообщение #4


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

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

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




Репутация:   5  


А класс? Класс покажи.

А QLineEdit как используется Отображаешь ты в ней текст так: QLineEdit::setText(QString);? В QString если я не ошибаюсь по дефолту идет кодировка utf-8.

Небольшая заметка:
Я лучше бы использовал QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
А все строки используемые в программе писал бы так tr("строка")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 21:24
Сообщение #5


Студент
*

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

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




Репутация:   0  


QLineEdit используется как элемент формы MyWidget. В него вводится текст запроса для MySQL. В MyWidget есть таблица для отображения результатов запроса - в ней тоже барабер. MySQL настроен на хранение данных в кодировке UTF-8. После установки Qt все ее диалоги, где есть русские (UTF-8 ) буквы показывают иероглифы. Подскажите, плз, как правильно настраивать и использовать фичи локализации в Qt.

С этим справился

main.cpp:15: ошибка: неполный тип ‘QTextCodec’ использован во вложенном спецификаторе имени

через

#include <QTextCodec>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 7.1.2009, 21:27
Сообщение #6


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

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

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




Репутация:   5  


Цитата
После установки Qt все ее диалоги, где есть русские ( UTF-8 ) буквы показывают иероглифы.

Всмысле все надписи на виджете показываются кракозябрами? Тогда может быть исходники в какой-то другой кодировке?

Сообщение отредактировал molchanoviv - 7.1.2009, 21:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 21:34
Сообщение #7


Студент
*

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

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




Репутация:   0  


Не все. Только русскоязычные. Все, что латинницей написано - выводится нормально. Исходники штатные, с сайта Trolltech. В документации ничего не нашел про опции поддержки локализации при сборке/установке Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 7.1.2009, 21:36
Сообщение #8


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

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

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




Репутация:   5  


А код то покажешь? И все-таки проверь кодировку исходников.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 7.1.2009, 21:45
Сообщение #9


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

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




Репутация:   3  


в никсах исходники легко можно конвертнуть в нужную кодировку с помощью iconv
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.1.2009, 21:50
Сообщение #10


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

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

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




Репутация:   94  


Типовой main.cpp:
/*!
\file main.cpp
\brief Основной файл программы.
*/

#include <QApplication>
#include <QtGui>
#include <QTextCodec>
#include <QLocale>
#include <QTranslator>
#include <QDir>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(mdi);

  QDir            dir_plugin;    // каталог плагинов
  QStyle        *pStyle;    // стиль ПО
  QString        locale;        // язык локали
  QTranslator    *qttr;        // переводчик программы
  QStringList     list_path;    // Список путей
  
    QApplication app(argc, argv);

    // Устанавливаем кодеки
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());// без этой кодировки с БД проблема
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()

    // Устанавливаем свойства программы (понадобится для настроек)
    QCoreApplication::setOrganizationName(QObject::tr("ЗАО \"Мая фирма\""));
    QCoreApplication::setApplicationName(QObject::tr("Моя программа"));

    // устанавливаем путь к плагинам (добавим каталог бинаря)
    dir_plugin = QDir(app.applicationDirPath()+"/plugins/");
    list_path << dir_plugin.absolutePath() << app.libraryPaths ();
    app.setLibraryPaths(list_path);

    // Устанавливаем стили
    pStyle = QStyleFactory::create("windowsxp");//Cleanlooks Plastique windows
    QApplication::setStyle(pStyle);
    app.setPalette(pStyle->standardPalette());

    // Устанавливаем превод библиотек Qt
    locale = QLocale::system().name();    // запрос языка (например: "ru")
    qttr = new QTranslator;
    app.load(QString("qt_") + locale); // загрузка файла qt_*.qm
    app.installTranslator(qttr);         // устанока переводчика    

    MainWindow mainWin;

    mainWin.resize(750, 550);
    mainWin.show();

    return app.exec();
}



Цитата(Litkevich Yuriy @ 8.1.2009, 0:50) *
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
указывает кодировку исходников!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 29.11.2024, 17:45