Russian Qt Forum
Июнь 16, 2024, 04:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QTranslator и QString  (Прочитано 5743 раз)
KsenZ
Гость
« : Май 23, 2014, 11:21 »

Пытаюсь подключить перевод к своей программе.
Собственно вот пример кода:
Код:
#include <QTranslator>
#include <QLocale>
#include "myApp.h"

int main(int argc, char** argv)
{
    myApp app(argc, argv);

    QString fname = QString("myapp_%1.qm").arg(QLocale::system().name().left(2));
    QTranslator translator;
    translator.load(fname, TRANSLATIONS_DIR, "_");
    app.installTranslator(&translator);

    return app.exec();
}

При сборе выдет ошибки:
Код:
In file included from /usr/include/qt4/QtCore/qobject.h:48:0,                                                                                                                
                 from /usr/include/qt4/QtCore/qtranslator.h:45,
                 from /usr/include/qt4/QtCore/QTranslator:1,
                 from /home/ksenz/dev/myapp/src/main.cpp:1:
/usr/include/qt4/QtCore/qstring.h: В функции «int main(int, char**)»:
/usr/include/qt4/QtCore/qstring.h:597:5: ошибка: «QString::QString(const char*)» is private
     QString(const char *ch);
     ^
/home/ksenz/dev/myapp/src/main.cpp:9:43: ошибка: в данном контексте
     QString fname = QString("myapp_%1.qm").arg(QLocale::system().name().left(2));
                                           ^
In file included from /usr/include/qt4/QtCore/qobject.h:48:0,
                 from /usr/include/qt4/QtCore/qtranslator.h:45,
                 from /usr/include/qt4/QtCore/QTranslator:1,
                 from /home/ksenz/dev/myapp/src/main.cpp:1:
/usr/include/qt4/QtCore/qstring.h:597:5: ошибка: «QString::QString(const char*)» is private
     QString(const char *ch);
     ^
/home/ksenz/dev/myapp/src/main.cpp:11:49: ошибка: в данном контексте
     translator.load(fname, TRANSLATIONS_DIR, "_");
                                                 ^
In file included from /usr/include/qt4/QtCore/qobject.h:48:0,
                 from /usr/include/qt4/QtCore/qtranslator.h:45,
                 from /usr/include/qt4/QtCore/QTranslator:1,
                 from /home/ksenz/dev/myapp/src/main.cpp:1:
/usr/include/qt4/QtCore/qstring.h:597:5: ошибка: «QString::QString(const char*)» is private
     QString(const char *ch);
     ^
/home/ksenz/dev/myapp/src/main.cpp:11:49: ошибка: в данном контексте
     translator.load(fname, TRANSLATIONS_DIR, "_");
                                                 ^

Причем данный пример, как подключить перевод, я взял из вполне рабочего приложения, которое отлично собирается.
Что же не так у меня?
« Последнее редактирование: Май 23, 2014, 13:33 от KsenZ » Записан
carrygun
Гость
« Ответ #1 : Май 23, 2014, 11:28 »

#include <QString>
Записан
KsenZ
Гость
« Ответ #2 : Май 23, 2014, 11:33 »

#include <QString>
Это не чего не меняет. Ошибки теже.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Май 23, 2014, 11:46 »

Думаю Qt собран с QT_NO_CAST_ASCII. Используй QLatin1String.
Записан
KsenZ
Гость
« Ответ #4 : Май 23, 2014, 12:10 »

Думаю Qt собран с QT_NO_CAST_ASCII. Используй QLatin1String.

Да действительно. Спасибо за подсказку. Только не Qt был собран с QT_NO_CAST_ASCII, а в CMakeLists.txt была директива ADD_DEFINITIONS(-DQT_NO_CAST_FROM_ASCII)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.