crossplatform.ru

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

> qDebug() << QString (еще раз плиз)
smooky
  опции профиля:
сообщение 29.10.2008, 23:53
Сообщение #1


Новичок


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

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




Репутация:   0  


Извиняюсь что еще раз беспокою!

Может всётаки мне ктонибудь приоткроет тайну: что нужно сделать чтобы можно было писать вот так:
...
QString str = "Damned QT!!!";
qDebug() << str; // вот так хочется
qDebug(str); // или так
...

// пока только так приходится писать
qDebug(str.toStdString().c_str());

P.S. Еще раз повторю: очень жаль что на выяснение такие простые вещи приходится тратить столько времени! Библиотека НЕ должна быть так устроена!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 23.2.2011, 22:28
Сообщение #2


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

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

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




Репутация:   94  


Цитата(shmurva @ 24.2.2011, 0:15) *
2. Не будет работать при выводе в консоль
qDebug() << "Этот текст будет в эроглифах"; // перебор вместо "cp1251" других кодировок ничего не дал (может не нашёл просто)
можно, например, сделать так:
void myMessageOutput(QtMsgType type, const char *msg)
{
    QTextCodec *outCodec = QTextCodec::codecForName("IBM866");
    
    switch (type) {
    case QtDebugMsg:{
        QTextStream err(stderr);
        err.setCodec(outCodec);
        err << QString(msg) << endl;
        //fprintf(stderr, "Debug: %s\n", msg);
        break;
    }case QtWarningMsg:
        fprintf(stderr, "Warning: %s\n", msg);
        break;
    case QtCriticalMsg:
        fprintf(stderr, "Critical: %s\n", msg);
        break;
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s\n", msg);
        abort();
    }
}

int main(int argc, char *argv[])
{
    qInstallMsgHandler(myMessageOutput);
    QApplication app(argc, argv);
    ...

А строковые литералы оборачивать в некую функцию, которая будет корректно перекодировать в UTF-16. Я чаще всего исходники держу в UTF-8, поэтому использую такой способ:
qDebug() << QObject::trUtf8("Этот текст будет в на русском");
хоть перевод его меня и не интерисует. Можно использовать функции QTextCodec.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 28.12.2024, 11:22