LINUX.ORG.RU

Шото кутя 4.4 глючит или я?


0

0

radws% ls -l
итого 40
-rw-r--r-- 1 rad rad  6105 2008-09-13 21:38 Makefile
drwxr-xr-x 2 rad rad  4096 2008-09-13 21:47 test1
-rw-r--r-- 1 rad rad     0 2008-09-13 21:48 test2
-rw-r--r-- 1 rad rad   209 2008-09-13 21:48 test.cpp
-rw-r--r-- 1 rad rad  4012 2008-09-13 21:48 test.o
-rwxr-xr-x 1 rad rad 10580 2008-09-13 21:48 tmp
-rw-r--r-- 1 rad rad   299 2008-09-13 21:38 tmp.pro
drwxr-xr-x 2 rad rad  4096 2008-09-13 21:47 рустест
-rw-r--r-- 1 rad rad     0 2008-09-13 21:48 рустест2
radws% ./tmp
"."
".."
"Makefile"
"test.cpp"
"test.o"
"test1"
"test2"
"tmp"
"tmp.pro"
radws% cat test.cpp
#include <QtCore>

int main(int argc, char** argv)
{
    QDir d(".");
    QStringList sl = d.entryList(QDir::AllEntries | QDir::Hidden);
    for(int i=0;i<sl.size();i++)
        qDebug()<<sl.at(i);
    return 0;
}


отчего не выводятся файлы с русскими именами?
★★☆

Ответ на: комментарий от Legioner

QLocale::system().name();

выдает вернул локаль, причем потыкал если перед все вызвать QApplication a(); то ВНЕЗАПНО все работает. Видимо что-то инициализируется такой что от меня ускользает…

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

Видимо оно до этого не знает, что используем UTF-8, и всё, что не в ASCII на этапе конвертирования в UTF-16 (используемый в QString-е), выбрасывает.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Знать бы как ему …

В общем QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); помогло.

wfrr ★★☆
() автор топика

Кури на тему qPrintable(), товарищ ::))

anonymous
()
Ответ на: комментарий от wfrr

>причем потыкал если перед все вызвать QApplication a(); то ВНЕЗАПНО все работает

>В общем QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); помогло

Скорее всего QTextCodec::setCodecForLocale() вызывается где-то внутри конструктора QCoreApplication, который в свою очередь вызывается конструктором QApplication. Без создания QApplication() используется кодек по-умолчанию (вероятно ASCII).

Вообще Qt предполагает, что приложение с её использованием будет содержать экземпляр QCoreApplication. Qt всё-таки не совсем библиотека, а скорее каркас.

Sectoid ★★★★★
()
Ответ на: комментарий от wfrr

>вызвать QApplication a(); то ВНЕЗАПНО все работает
Угу... с чего бы вдруг...

"For any GUI application that uses Qt, there is precisely one QApplication object..."
http://doc.trolltech.com/4.4-snapshot/qapplication.html#details

"For non-GUI application that uses Qt, there should be exactly one QCoreApplication object..."
http://doc.trolltech.com/4.4-snapshot/qcoreapplication.html#details

xydo ★★
()
Ответ на: комментарий от xydo

Да, справку читать я умею, там еще написано "для поддрежки механизма сообщений в консольных приложениях", вроде как никто не принуждает юзать, и в консольных примерах он не используется.

wfrr ★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.