QT widget 实现动态多语言切换,无需重启

 分享一下我自己做的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是我自己设置的方法,用于重设文本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值