Russian Qt Forum

Qt => Общие вопросы => Тема начата: Ximik от Март 05, 2009, 16:34



Название: char[] => QString
Отправлено: 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


Название: Re: char[] => QString
Отправлено: BRE от Март 05, 2009, 16:42
Давай пока забудем про твой код.
Что лежит в stream->language? Строка из 3 символов завершающаяся 0? В какой кодировке эта строка?


Название: Re: char[] => QString
Отправлено: crackedmind от Март 05, 2009, 16:46
А что ты хотел вообще вывести??
Цитировать
char lang;
это же не строка, а просто один(!) символ


Название: Re: char[] => QString
Отправлено: Ximik от Март 05, 2009, 19:27
А что ты хотел вообще вывести??
Цитировать
char lang;
это же не строка, а просто один(!) символ
да, это я сильно протупил, но чего я там только не перепробовал

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


да. Насчёт кодировки - по идеи Latin1, но документации толковой не нашёл на сайте.
спасибо за наводку. Не понятно почему, но работает такой способ
this->setText(2, QString::fromLatin1(&stream->language[0]));


Название: Re: char[] => QString
Отправлено: BRE от Март 05, 2009, 19:30
this->setText(2, QString::fromLatin1(&stream->language[0]));

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


Название: Re: char[] => QString
Отправлено: Ximik от Март 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)


Название: Re: char[] => QString
Отправлено: BRE от Март 05, 2009, 19:49
src/streamwidgetitem.h:26: error: no matching function for call to ‘QString::fromLatin1(char (*)[4])’
Надо указывать номер элемента

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


Название: Re: char[] => QString
Отправлено: Ximik от Март 05, 2009, 19:52
src/streamwidgetitem.h:26: error: no matching function for call to ‘QString::fromLatin1(char (*)[4])’
Надо указывать номер элемента

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


g++.


Название: Re: char[] => QString
Отправлено: BRE от Март 05, 2009, 19:56
g++.
Версия?
Странно, у меня он нормально "съедает" мою конструкцию.

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


Название: Re: char[] => QString
Отправлено: Ximik от Март 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