crossplatform.ru

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


  Ответ в Как вшить *.qm файлы в исполняемый файл?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
wiz29 Дата 15.2.2012, 14:07
  Дальше как любым файлом из ресурсов. Путь к файлу через ":путь к ресурсу".
что то вроде
pTranslator->load(":/Resources/qt_ru.qm")
good_game Дата 15.2.2012, 12:35
 
Цитата(wiz29 @ 15.2.2012, 12:01) *
Добавь этот файл в ресурсы.


Добавил. А дальше не знаю как с ними обращаться. Вернее обращаться так, чтобы код не зависел ни от их количества, ни от их имён. Обращаться с ними так, как будто они в какой-то директории рядом лежат.
wiz29 Дата 15.2.2012, 12:01
  Добавь этот файл в ресурсы.
good_game Дата 15.2.2012, 10:27
  Доброе время суток, уважаемые форумчане. Ситуация вот какая. Написано приложение с переводимым интерфейсом. Сгенерированы файлы *.ts, затем из них созданы *.qm, кинуты в специальную директорию. Прога из этой директории их читает и переводит интерфейс как надо. В интерфейсе создаётся меню для смены языка приложения прямо во время выполнения программы. Вот код функции, которая создаёт меню смены языков:
void MainWindow::create_language_menu()
{
    // Создаём меню языков
    QActionGroup *languageActionGroup = new QActionGroup(this);
    connect(languageActionGroup, SIGNAL(triggered(QAction *)), this, SLOT(switchLanguage(QAction *)));

    QDir dir(qmPath);
    QStringList fileNames = dir.entryList( QStringList("*.qm"));

    QString sellocale = "en";

    for (int i=0; i < fileNames.size(); i++)
    {
        QString locale = fileNames[i];
        locale.remove(0, locale.indexOf('_')+1);
        locale.truncate(locale.lastIndexOf('.'));

        QTranslator translator;
        translator.load(fileNames[i], qmPath);
        QString language = translator.translate("MainWindow", "English");

        QAction *action = new QAction(tr("%1").arg(language), this);
        action->setCheckable(true);
        action->setData(locale);        

        languageActionGroup->addAction(action);

        if (locale == sellocale)
        {
            switchLanguage(action);
            action->setChecked(true);
        }
    }
}

И всё работает замечательно. Задача в том, чтобы эти файлы *.qm лежали не в какой-то директории, а были вшиты в исполняемый файл (в данный момент программа их ищет в директории qmPath). Как сделать, чтобы программа их искала в своих ресурсах?
У самого пока это сделать не получается. Пробовал добавить в проект. В Креаторе они добавляются как "Другие файлы", и как потом их перебирать, не имею понятия.
Пробовал сделать qmPath = ":/", программа не видит файлов. Как сделать?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 10.5.2024, 7:44