crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> 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
  опции профиля:
сообщение 30.10.2008, 0:05
Сообщение #2


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

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

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




Репутация:   94  


Цитата(smooky @ 30.10.2008, 2:53) *
QString str = "Damned QT!!!";
qDebug() << str; // вот так хочется
qDebug(str); // или так
а в чем проблема?

Вот рабочий пример:
main.cpp
//UTF-8 (w/o BOM)
#include <QtGui>

int main(int argc, char** argv)
{
  QString        locale;            // язык локали
  QTranslator    *apptr;    // переводчики бибилиотеки и программы
  
  
    QApplication app(argc, argv);

    // Кодек для tr() / Codec for tr()
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    // Устанавливаем превод программы
    locale = "en"/*QLocale::system().name()*/;    // запрос языка (например: "ru")
qDebug() << "locale is " << locale;
    apptr = new QTranslator;
    apptr->load(QString("app_") + locale); // загрузка файла qt_*.qm
    qApp->installTranslator(apptr);         // установка переводчика    
qDebug() << apptr;



    // Метка / Label
    QLabel lbl(QObject::tr("Test-Привет-Test"));
    // Отобразить / Show
    lbl.show();




    return app.exec();

}

testproj.pro

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
SOURCES += main.cpp

#======== Translation ===============
TRANSLATIONS    = app_en.ts
CODECFORTR      = UTF-8

CONFIG (debug, debug|release) {
    CONFIG       += console
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.10.2008, 6:30
Сообщение #3


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

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

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




Репутация:   94  


smooky, про регулярки тему создавай отдельно, эта тема называется :
qDebug() << QString (еще раз плиз)
когда человек будет искать про регулярки, у него не будет асоциаций с этой темой.

Цитата(smooky @ 30.10.2008, 4:57) *
Неа! Не работает! Ну да ладно - это видимо проклятье! Даже не хочу разбираться - почему! ,-(
Ищи касяк, Qt здесь не причем. У всех это работает, кроме тебя. Не решишь эту проблему - не ришишь не одной.

Проверяй вот этот пример:Прикрепленный файл  test12.zip ( 801 байт ) Кол-во скачиваний: 388
, ничего в нем не меняя собери так:
qmake
make

запусти и отпишись, что ты видишь.

вместо make для MinGW32 используй mingw32-make
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smooky
  опции профиля:
сообщение 30.10.2008, 6:40
Сообщение #4


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 30.10.2008, 9:30) *
smooky, про регулярки тему создавай отдельно, эта тема называется :
qDebug() << QString (еще раз плиз)
когда человек будет искать про регулярки, у него не будет асоциаций с этой темой.

Цитата(smooky @ 30.10.2008, 4:57) *
Неа! Не работает! Ну да ладно - это видимо проклятье! Даже не хочу разбираться - почему! ,-(
Ищи касяк, Qt здесь не причем. У всех это работает, кроме тебя. Не решишь эту проблему - не ришишь не одной.

Проверяй вот этот пример:Прикрепленный файл  test12.zip ( 801 байт ) Кол-во скачиваний: 388
, ничего в нем не меняя собери так:
qmake
make

запусти и отпишись, что ты видишь.

вместо make для MinGW32 используй mingw32-make


собралось!!! :-)
чот у меня косяк гдето! Буду разбираться! Спасибо!

P.S. У меня Ubuntu 8.04, gcc 4.2.4
Виндуса нэту!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.10.2008, 7:15
Сообщение #5


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

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

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




Репутация:   94  


smooky, скажи еще версию Qt, лучше так посмотреть:
qmake -v
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
shmurva
  опции профиля:
сообщение 23.2.2011, 22:15
Сообщение #6


Новичок


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

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




Репутация:   0  


Русский текст в Qt можно ещё сделать так:

1. Работает для GUI приложений.
Начинает отображаться русский текст, загружаемый из текстовыйх файлов с кодировкой ANSI,
а также введённый в программе руский текств QPlainText успешно сохраняется в файл (через QFile) в кодировке ANSI.

    // Вызвать в любом месте (можно даже в main-функции).
    QTextCodec *codec = QTextCodec::codecForName("cp1251");
    QTextCodec::setCodecForCStrings(codec);
    // После этого загружается и отображается русский текст
    // как в GUI так и в сохраняемых текстовых файлах (ANSI)


Взято от сюда

2. Не будет работать при выводе в консоль

qDebug() << "Этот текст будет в эроглифах"; // перебор вместо "cp1251" других кодировок ничего не дал (может не нашёл просто)

3. Чтобы работал интерфейс qDebug() << "MyText";
Надо подключить файл
#include <QtGui>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.2.2011, 22:28
Сообщение #7


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

Группа: Сомодератор
Сообщений: 9648
Регистрация: 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.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 24.2.2011, 8:50
Сообщение #8


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

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




Репутация:   7  


Цитата(shmurva @ 23.2.2011, 22:15) *
3. Чтобы работал интерфейс qDebug() << "MyText";
Надо подключить файл

#include <QtGui>

Достаточно подключать
#include <QDebug>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
TiiL
  опции профиля:
сообщение 6.7.2011, 8:25
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

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




Репутация:   0  


Приветствую, вот есть такое :

#include <QDebug>
код программы...

qDebug() << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";

код программы...


и сразу вылезают такие ошибки

n file included from c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qlist.h:50,

from c:\Qt\2010.05\qt\include/QtCore/qlist.h:1,

from c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qhash.h:48,

from c:\Qt\2010.05\qt\include/QtCore/qhash.h:1,

from c:\Qt\2010.05\qt\include\QtCore/../../src/corelib/io/qdebug.h:46,

from c:\Qt\2010.05\qt\include\QtCore/qdebug.h:1,

from c:\Qt\2010.05\qt\include\QtCore/QDebug:1,

from dos_phys.cpp:16:

c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:74: error: 'std::input_iterator_tag' has not been declared

c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator: In function 'void __gnu_cxx::__distance(_RandomAccessIterator, _RandomAccessIterator, _Distance&, std::random_access_iterator_tag)':

c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:87: error: '<anonymous>' has incomplete type

c:\Qt\2010.05\qt\include/QtCore/../../src/corelib/tools/qiterator.h:51: error: forward declaration of 'struct std::random_access_iterator_tag'

c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator: In function 'void __gnu_cxx::distance(_InputIterator, _InputIterator, _Distance&)':

c:\Qt\2010.05\mingw\lib\gcc\mingw32\4.4.0\include\c++\ext/iterator:107: error: '__iterator_category' is not a member of 'std'
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 6.7.2011, 11:53
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


#include <QtDebug>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.10.2018, 13:15