QT添加中英文切换

构造函数:

MainWindow::MainWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	connect(ui.languageBtn, SIGNAL(clicked()), this, SLOT(ClickedLanguage()));//中英文切换
	//connect(ui.picinputbtn, SIGNAL(clicked()), this, SLOT(PicinputClicked()));//图像输入
	//connect(ui.prebtn, SIGNAL(clicked()), this, SLOT(PrebtnClicked()));//图像预处理
}

中英文字典:(若原本项目用的是英文,则添加个英文字典,把里面涉及到的英文翻译成中文;若用的是中文,则反之)
以本项目为例:(本项目本身是用英文写的,所以应添加英文字典)
第一步:项目中所以涉及显示的英文都改成tr("…")这种格式。
第二步:添加英文字典
点击工具栏的"Qt VS Tools" -> Create New Translation File -> 选择英语 -> 确定 -> 即可得到翻译字典:pro4_en.ts
第三步:更新pro4_en.ts
右击pro4_en.ts -> 点击lupdata
第四步:配置中文
双击进入pro4_en.ts -> 对应每个填写译文:在Translation to American English(United States)中填写对应的中文-> 点击工具栏的绿色钩钩 -> 点击工具栏中的“文件” -> 选择“另外发布为” (工程路径) -> 保存

只有项目中新添加显示的英文的话,都要重新更新字典:执行第三和第四步
void MainWindow::ClickedLanguage()
{
	static bool LanguegeFlag = 0;
	if (LanguegeFlag)
	{	
		//本工程为例:此处显示英文
		qApp->removeTranslator(translator);
		delete translator;
		translator = NULL;
	}
	else
	{
		//此处显示中文
		translator = new QTranslator(0); 
		translator->load("pro4_en.qm", ".");
		auto binstall = qApp->installTranslator(translator);
	}
	LanguegeFlag = !LanguegeFlag;
	ui.retranslateUi(this);//重新翻译刷新界面
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 中,可以通过重新加载 `qm` 文件来实现中英文切换。`qm` 文件是 Qt 语言国际化的文件格式,包含了翻译后的字符串和相应的语言信息。 以下是实现中英文切换的步骤: 1. 在项目中添加多语言支持,可以通过 Qt Creator 的 `File -> New File or Project -> Files and Classes -> Qt -> Qt Resource File` 创建一个 `.qrc` 文件,然后在其中添加 `ts` 文件作为翻译文件。可以通过 Qt Linguist 编辑 `ts` 文件,将翻译后的字符串保存到 `qm` 文件中。 2. 在代码中加载 `qm` 文件,可以通过 `QTranslator` 类实现。比如,在 `main()` 函数中加载 `qm` 文件: ``` int main(int argc, char *argv[]) { QApplication a(argc, argv); // 加载默认语言的 qm 文件 QTranslator translator; translator.load(QLocale::system(), "myapp", "_", ":/translations"); a.installTranslator(&translator); // ... } ``` 这里使用了 `QLocale::system()` 来获取当前系统的默认语言,然后通过 `load()` 函数加载相应的 `qm` 文件。`_:translations` 表示 `qm` 文件所在的文件夹。 3. 在界面上添加一个按钮或者菜单项,用于触发中英文切换。在按钮的槽函数中,重新加载相应的 `qm` 文件,然后更新界面文本即可。比如: ``` void MainWindow::on_switchLanguage_triggered() { // 加载中文的 qm 文件 QTranslator translator; translator.load("myapp_zh", ":/translations"); qApp->installTranslator(&translator); // 更新界面文本 ui->retranslateUi(this); } ``` 在这个示例代码中,我们在按钮槽函数中加载了中文的 `qm` 文件,并通过 `retranslateUi()` 函数来更新界面文本。需要注意的是,如果此时有打开的对话框,也需要调用对话框的 `retranslateUi()` 函数来更新对话框的文本。 以上就是通过重新加载 `qm` 文件来实现中英文切换的方法。需要注意的是,重新加载 `qm` 文件会使程序重新分配内存,可能会导致一定的性能消耗,因此应该根据实际情况进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值