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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: char[] => QString  (Прочитано 5361 раз)
Ximik
Гость
« : Март 05, 2009, 16:34 »

Делаю так
Код:
char lang;
for (int i=0;i<4;i++) lang += stream->language[i];
qDebug(&lang);
this->setText(QString::fromAscii(&lang));

qDebug выводит сообщение в кривой кодировке, текст не устанавливается вообще (пробовал Latin1, Utf8 - тоже самое)
stream->language - char [4] из C-шной библиотеки avformat
Записан
BRE
Гость
« Ответ #1 : Март 05, 2009, 16:42 »

Давай пока забудем про твой код.
Что лежит в stream->language? Строка из 3 символов завершающаяся 0? В какой кодировке эта строка?
Записан
crackedmind
Гость
« Ответ #2 : Март 05, 2009, 16:46 »

А что ты хотел вообще вывести??
Цитировать
char lang;
это же не строка, а просто один(!) символ
Записан
Ximik
Гость
« Ответ #3 : Март 05, 2009, 19:27 »

А что ты хотел вообще вывести??
Цитировать
char lang;
это же не строка, а просто один(!) символ
да, это я сильно протупил, но чего я там только не перепробовал

Давай пока забудем про твой код.
Что лежит в stream->language? Строка из 3 символов завершающаяся 0? В какой кодировке эта строка?


да. Насчёт кодировки - по идеи Latin1, но документации толковой не нашёл на сайте.
спасибо за наводку. Не понятно почему, но работает такой способ
this->setText(2, QString::fromLatin1(&stream->language[0]));
Записан
BRE
Гость
« Ответ #4 : Март 05, 2009, 19:30 »

this->setText(2, QString::fromLatin1(&stream->language[0]));

Так оно симпатишней:
Код:
setText( 2, QString::fromLatin1( stream->language ) );
Записан
Ximik
Гость
« Ответ #5 : Март 05, 2009, 19:39 »

this->setText(2, QString::fromLatin1(&stream->language[0]));

Так оно симпатишней:
Код:
setText( 2, QString::fromLatin1( stream->language ) );

src/streamwidgetitem.h:26: error: no matching function for call to ‘QString::fromLatin1(char (*)[4])’
Надо указывать номер элемента

или это про отступы и отсутствие this? Это привычки после AS)
Записан
BRE
Гость
« Ответ #6 : Март 05, 2009, 19:49 »

src/streamwidgetitem.h:26: error: no matching function for call to ‘QString::fromLatin1(char (*)[4])’
Надо указывать номер элемента

или это про отступы и отсутствие this? Это привычки после AS)
А что за компилятор?
Записан
Ximik
Гость
« Ответ #7 : Март 05, 2009, 19:52 »

src/streamwidgetitem.h:26: error: no matching function for call to ‘QString::fromLatin1(char (*)[4])’
Надо указывать номер элемента

или это про отступы и отсутствие this? Это привычки после AS)
А что за компилятор?


g++.
Записан
BRE
Гость
« Ответ #8 : Март 05, 2009, 19:56 »

g++.
Версия?
Странно, у меня он нормально "съедает" мою конструкцию.

language в структуре определен как char language[4]?
Записан
Ximik
Гость
« Ответ #9 : Март 05, 2009, 20:15 »

g++.
Версия?
Странно, у меня он нормально "съедает" мою конструкцию.

language в структуре определен как char language[4]?

да, так

gcc (Ubuntu 4.3.3-5ubuntu1) 4.3.3
флаги
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -Ibuild -Ibuild
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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