Я только что узнал, как установить языковой пакет для моего приложения в Qt, и в настоящее время у меня есть два вопроса. Я написал минимальное приложение, чтобы показать, где меня смутило.
Я создал главное окно, которое содержит только QLabel
для отображения текста и QPushButton
для изменения текста метки с китайского на английский.
А вот и мой код:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
chineseTr = new QTranslator;
chineseTr->load("../untitled/Language-Pack_zh-CN.qm");
englishTr = new QTranslator;
englishTr->load("../untitled/Language-Pack_en-US.qm");
QCoreApplication::installTranslator(chineseTr);
mWidget = new QWidget;
setCentralWidget(mWidget);
hLayout = new QHBoxLayout;
mWidget->setLayout(hLayout);
mLbl = new QLabel;
mLbl->setText(tr("Text"));
translateBtn = new QPushButton;
connect(translateBtn, &QPushButton::clicked, this, &MainWindow::translateText);
hLayout->addWidget(mLbl);
hLayout->addWidget(translateBtn);
}
void MainWindow::translateText()
{
QCoreApplication::removeTranslator(chineseTr);
QCoreApplication::installTranslator(englishTr);
}
Вопрос первый:
Как вы можете видеть в конструкторе, я сначала загрузил языковой пакет, либо QLabel
просто не будет отображать китайский текст. Я могу либо загрузить пакет китайского языка перед созданием всего остального в конструкторе, либо загрузить в main.cpp
перед созданием объекта MainWindow
. Я ошибаюсь или эти языковые пакеты должны быть загружены перед созданием объектов класса?
Вопрос второй:
Как вы можете видеть в коде, я нажал кнопку и, чтобы удалить пакет для китайского языка и установить новый переводчик для загрузки пакета для английского языка. Но ничего не работает. Так как я могу динамически менять язык в приложении? Я знаю, что этот вопрос может быть простым, но я не нахожу в Интернете никакого полезного примера, чтобы показать мне, как это сделать? Так может кто-нибудь показать мне способ сделать это или дать мне подсказку?
Надеюсь, я объясню четко и заранее спасибо.