分享一下我自己做的QT应用,这个应用还只是雏形很多功能并没有完成,但是关于界面的功能已经实现了许多,用麻雀虽小五脏俱全来形容挺合适。
感兴趣的可以下载源码:Commits · TTTTHBBBB/Coord (github.com);
提供一种思路实现:无需重启的多语言切换
1.调用qApp->installTranslator(m_pTranslator);重新加载翻译器,此时会重新加读取指定的qm文件,但是已经设置的文本是不会改变的,需要重启才能生效。
2. 监听QEvent::LanguageChange事件,当切换翻译器时会在底层发出一个LanguageChange事件,所有的需要改变文本的窗口都监听这个事件。
3.监听到了这个事件后去调用文本的设置函数(setText(tr("xxx"))此时tr("xx")中的内容就已经被替换了。
bool FunctionBar::event(QEvent *event)
{
if(event->type() == QEvent::LanguageChange)
{
ui->retranslateUi(this);
}
return QWidget::event(event);
}
void FunctionBar::retranslateUi()
{
this->MatchText();
}
void FunctionBar::MatchText()
{
ui->pushButtonChart->MatchText(tr("chart"))
ui->pushButtonFile->MatchText(tr("file"));
ui->pushButtonColor->MatchText(tr("coloredit"));
ui->filewidget->MatcText();
ui->chartwidget->MatcText();
}
//Match是我自己设置的方法,用于重设文本