Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 120 стр.

UptoLike

120
Рис. 9.5.6. Qt Linguist.
Метод QTranslator::load() загружает перевод; QCoreApplication::installTranslator()
устанавливает выбранный переводчик; метод MainWindow::setTranslator() устанавливает перевод для
главного окна.
· Добавим метод MainWindow::retranslateUI(), вызываемый когда пользователь инициирует
переключение языка. В данном методе мы поочерёдно будем переназначать название каждого
ранее маркированного элемента. В файл “mainwindow.cpp” добавим:
void MainWindow::retranslateUI() {
this->fileMenu->setTitle(tr("&File"));
this->viewMenu->setTitle(tr("&View"));
this->windowBkgMenu->setTitle(tr("&Background"));
this->langMenu->setTitle(tr("&Language"));
setWindowTitle(tr("SVG Viewer"));
this->m_backgroundAction->setText(tr("B&ackground"));
this->m_outlineAction->setText(tr("O&utline"));
this->m_chessAction->setText(tr("&Chess"));
this->m_meegoAction->setText(tr("&MeeGo"));
this->m_engAction->setText(tr("&English"));
this->m_rusAction->setText(tr("&Russian"));
this->openAction->setText(tr("&Open..."));
this->quitAction->setText(tr("E&xit"));
}
· Соединим соответствующие слоты-события, связанные с переключением языка. Для этого
добавим в файлmainwindow.cpp” описание слота setWindowLang
void MainWindow::setWindowLang(QAction *action)
{
if (action == m_engAction) {
this->translator->load("lab09_en.qm",":/files/translations/");
} else if(action == m_rusAction) {
this->translator->load("lab09_ru.qm",":/files/translations/");
}
retranslateUI();
}
и соединим элементы в конструкторе
connect(langGroup, SIGNAL(triggered(QAction*)),
this, SLOT(setWindowLang(QAction*)));