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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отсутствует кириллица при запросе данных c помощью QSqlTableModel  (Прочитано 3175 раз)
Pupil
Гость
« : Май 24, 2013, 10:37 »

Добрый день!

При создании класса, наследованного от
Код:
QSqlTableModel
, в функции:
Код:
QVariant ReportModel::data(const QModelIndex &idx, int role) const
{
   QVariant value = QSqlTableModel::data(idx, role);

   switch (role)
   {
        case Qt::FontRole: {

           QString x = value.toString();
           QString  y = x.toLocal8Bit();

           if(idx.column() == 6 && y == "Да")  {

            QFont font = QFont("Helvetica", 12, QFont::Bold);
                          return qVariantFromValue(font);}
            else   if(idx.column() == 7 && y == "Нет")  {
                         QFont font = QFont("Helvetica", 8, QFont::Bold);
                          return qVariantFromValue(font);
            }
            break;
        }
невозможно из
Код:
 QVariant value = QSqlTableModel::data(idx, role);
получить символы кириллицы.

Функция
Код:
toLocal8bit()
срабатывает в случае, если
Код:
QVariant
принудительно в коде присвоить значение, например,
Код:
QVariant x = "Пример";

из базы данных же оно упорно не хочет читать кириллицу.

Qt 4.8
СУБД PostgreSql 9.0.1
кодировка в БД: KOI8R
« Последнее редактирование: Май 24, 2013, 10:48 от Pupil » Записан
mutineer
Гость
« Ответ #1 : Май 24, 2013, 10:39 »

А исходники в какой кодировке? в local8Bit?
Записан
Pupil
Гость
« Ответ #2 : Май 24, 2013, 10:48 »

Исходники в KOI8R
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Май 24, 2013, 23:38 »

Исходники в KOI8R
Хранить исходники в utf-8 таки предпочтительнее, для конвертации использовать
Код
C++ (Qt)
QTextCodec::codecForName("KOI8-R")->fromUnicode(...)
и
Код
C++ (Qt)
QTextCodec::codecForName("KOI8-R")->toUnicode(...)
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Pupil
Гость
« Ответ #4 : Июнь 20, 2013, 14:45 »

Я понимаю, что лучше использовать UTF-8, но если б все зависело в программировании от свободного выбора... )))
С модельной может поэкспериментирую позже. Решил вопрос как ученый - состряпал делегат )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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