Qt QMessageBox、QDialogButtonBox中英文翻译动态切换
QMessageBox、QDialogButtonBox中英文翻译动态切换,单独的固定显示成中文的方法很多,对于需要中英文翻译动态切换的场景就不适用,把固定的中文改成Qt翻译机制能处理的tr字符串就行了。
本文基于Qt5.14.2版本,对QMessageBox、QDialogButtonBox等Qt自带qm处理不到的地方进行随软件语言的动态切换,不额外使用qt_zh_cn.ts,不深入底层,尽快对现有项目实现翻译。
QDialogButtonBox,直接在构造函数,对button的setText进行翻译,与普通翻译一致。
ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Ok")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel"));QMessageBox,直接在设置QMessageBox的时候,对button的setText进行翻译,与普通翻译一致。
msgBox.button(QMessageBox::Yes)->setText(tr("Yes")); msgBox.button(QMessageBox::No)->setText(tr("No")); msgBox.button(QMessageBox::Ok)->setText(tr("Ok"));