我刚刚学会了如何在 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
对象之前加载。我是不是弄错了,还是只需要在创建类对象之前加载那些语言包?
问题二:
正如你在代码中看到的那样,我点击了按钮并删除了中文语言包并安装了新的翻译器以加载英文语言包。但没有任何效果。那么如何在应用程序中动态更改语言?我知道这个问题可能很简单,但我在网上找不到任何有用的例子来告诉我如何做到这一点?那么有人可以告诉我一种方法来做到这一点或给我一个提示吗?
希望我能清楚地解释自己,并提前感谢。