Здравствуйте, гость ( Вход | Регистрация )
qp | Дата 14.7.2010, 10:17 |
пофиксил. Всё оказалось вот так: генерируем: qWarning()<<(qApp->tr("Некоторый текст")); отображаем мессаг вот так: void MsgOutput(QtMsgType type, const char *msg) switch(type) { case QtDebugMsg: QMessageBox::critical(0, qApp->tr("Debug"), QString::fromLocal8Bit(msg, -1), QMessageBox::Cancel); break; .... Тоесть qWarning либо переделывает сообщение в локальную кодировку, либо передает один символ как два. тоесть там же конст чар он принимает один байт, а UTF кодируется двумя. Всем спасибо |
|
maint | Дата 14.7.2010, 9:52 |
maint, твой вариант аналогичен:
т.е. тому что у него. да, забыл, виноват QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8")); |
|
Litkevich Yuriy | Дата 14.7.2010, 9:29 |
maint, твой вариант аналогичен:
т.е. тому что у него. |
|
maint | Дата 14.7.2010, 9:19 |
не работает. qWarning() << qApp->tr("Некоторый текст"); QMessageBox::critical(0, qApp->tr("Debug"), msg, QMessageBox::Cancel); так тоже: qWarning("Некоторый текст"); QMessageBox::critical(0, qApp->tr("Debug"), qApp->tr(msg), QMessageBox::Cancel); Насколько я понимаю, проблема в том что неправильно qWarning сообщение передает, потому что если в функции выводящей сообщение сделать: void MsgOutput(QtMsgType type, const char *msg) { msg="русский текст"; ... То выводится нормально. Значит спроблема в qWarning. и const char*, Проджект у меня в UTF-8 Есть ещё идеи? писал же уже про tfUtf8 !!!!! qWarning() << qApp->trUtf8("Некоторый текст"); |
|
qp | Дата 14.7.2010, 8:59 |
не работает. qWarning() << qApp->tr("Некоторый текст"); QMessageBox::critical(0, qApp->tr("Debug"), msg, QMessageBox::Cancel); так тоже: qWarning("Некоторый текст"); QMessageBox::critical(0, qApp->tr("Debug"), qApp->tr(msg), QMessageBox::Cancel); Насколько я понимаю, проблема в том что неправильно qWarning сообщение передает, потому что если в функции выводящей сообщение сделать: void MsgOutput(QtMsgType type, const char *msg) { msg="русский текст"; ... То выводится нормально. Значит спроблема в qWarning. и const char*, Проджект у меня в UTF-8 Есть ещё идеи? |
|
Litkevich Yuriy | Дата 13.7.2010, 16:31 |
QMessageBox::critical(0, qApp->tr("Debug"), qApp->tr(msg), QMessageBox::Cancel); qWarning() << qApp->tr("Некоторый текст").toUtf(); выделенный tr() лишний. Попробуй проанализировать, как произойдут преобразования кодировокqWarning() << qApp->tr("Некоторый текст").toLocal8Bit; |
|
maint | Дата 13.7.2010, 15:00 |
Да, так действительно собирается без ошибок, но русский текст выводится квадратами. варианты типа: qWarning() << qApp->tr("Некоторый текст").toUtf(); qWarning() << qApp->tr("Некоторый текст").toLocal8Bit; Неработают. Интересно, но русский текст в окне диалога отображается корректно. текст генерируемых мессагов — квадратами. trUtf8 не судьба вставить ? |
|
qp | Дата 13.7.2010, 13:53 |
Да, так действительно собирается без ошибок, но русский текст выводится квадратами. варианты типа: qWarning() << qApp->tr("Некоторый текст").toUtf(); qWarning() << qApp->tr("Некоторый текст").toLocal8Bit; Неработают. Интересно, но русский текст в окне диалога отображается корректно. текст генерируемых мессагов — квадратами. |
|
igor_bogomolov | Дата 13.7.2010, 13:14 |
Компилятор тебе уже обо всем сообщил: Цитата no matching function for call to 'qWarning(QString)' Т.е. qWarning не может в качестве параметра принимать QString. Делай так:
|
|
qp | Дата 13.7.2010, 12:46 |
Организую вывод вообщений. есть функция обрабатывающая сообщения:
есть хендлер: qInstallMsgHandler(MsgOutput); далее вызываем сообщени: Вот кусок кода который не работает: qWarning(qApp->tr("Некоторый текст"); Ошибка: no matching function for call to 'qWarning(QString)' Вот кусок кода который работает: qWarning("Некоторый текст"); или qWarning(qApp->tr("Некоторый текст").toUtf(); однако в случае с русским выходят кракозябли? а мне нужен именно русский. и именно Utf для tr() у меня:
Помогите разобраться почему так? Что можно сделать чтобы выводился нормально текст?? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 14:30 |