Qt中实现按键切换中英文

1.在.pro文件中添加

TRANSLATIONS = \

qt_cn.ts \ # 中文

qt_en.ts # 英文

2.ui中拖入控件,编译保存一下

3.右键工程,添加现有文件

4.加载翻译


//使用时将.qm文件拷贝到构建目录的debug/release目录下
QString strFile =QCoreApplication::applicationDirPath()+"/";
ch.load(strFile + "qt_cn.qm");
en.load(strFile + "qt_en.qm");

5.点击工具-外部-Qt语言家-更新翻译

6.选择中文的,用...打开,选择Qt Linguist

7.打开后直接默认确定

8.中文的直接就复制中文的进来,按照123步骤,保存后关闭

9.点击英文的,步骤同上,改成自己需要翻译成的东西,注意如果和原来格式不一样会有警告,比如多了一个空格

 10.关闭后点击工具-外部-Qt语言家-发布翻译

 11.两个按键分别控制切换中英文

void MainWindow::on_pushButton_clicked()
{
    qApp->installTranslator(&ch);
     ui->retranslateUi(this);
}

void MainWindow::on_pushButton_2_clicked()
{
    qApp->installTranslator(&en);
      ui->retranslateUi(this);
}

12.运行结果

中文:

英文:

13.注意的点

1.以上方法只适用于ui里面的控件,如果是用代码生成的则无效,如果想让代码生成的也生效的话只需要在设置字符串的时候加上tr后,保存文件,需要点击工具-外部-Qt语言家-更新翻译,然后再用Qt Linguist打开

例:

QMessageBox::information(nullptr,tr("DigisynLink"),tr("确定重启设备?"));
QPushButton *bt = new QPushButton();
bt->setText(tr("你好"));
2.在执行ui->retranslateUi(this);之后会将原本setText的文本清空了,如果不希望被清空需要重新设置数据
 ui->label->setText(tr("测试"));

 如果不重新设置则会清空

 重新设置后即可正常实现

void MainWindow::on_ChineseBt_clicked()
{
    qApp->installTranslator(&ch);
    ui->retranslateUi(this);
    ui->label->setText(tr("测试"));
}

void MainWindow::on_EnglishBt_clicked()
{
    qApp->installTranslator(&en);
    ui->retranslateUi(this);
    ui->label->setText(tr("测试"));
}

3.如果在mainwindow下使用了QStackWidget来创建多个界面,并且每个界面是分离出来管理的,以上步骤只能替换当前界面的中英文,如果想要实现全部替换,需要在每个页面里面重写event方法
bool MainWindow::event(QEvent *event)
{
    if(event->type() == QEvent::LanguageChange)
    {
         ui->retranslateUi(this);  // 更新界面的翻译 
    }
    return QWidget::event(event);
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软键盘是一种虚拟的输入设备,它可以在屏幕上显示出来,用户可以通过触摸屏幕上的按键来输入文字。在Qt开发,软键盘可以被作为一个部件来实现,以支持中英文输入。 首先,我们需要定义软键盘的布局。这可以通过Qt提供的各种部件(如QLabel、QPushButton等)和布局管理器(如QGridLayout、QVBoxLayout、QHBoxLayout等)来实现。通过将这些部件放置在一个QWidget,并将其设置为QWidget的子部件,我们就可以得到一个可自由调整大小并在屏幕上显示的软键盘。 其次,我们需要定义软键盘的输入行为。这可以通过为软键盘的按钮定义信号槽(或回调函数)来完成。在每次按钮被按下时,软键盘应该将相应的字符输入到客户端应用程序。对于中英文输入,我们可以使用QInputMethod类来完成输入法的切换,并根据当前输入法状态将相应的字符输入到客户端应用程序。 最后,我们需要将软键盘部件与客户端应用程序连接起来。在Qt,部件之间的交互可以通过信号槽机制来完成。我们可以定义一个信号,为软键盘按钮连接该信号,当按钮被按下时,该信号会被发射。客户端应用程序会定义一个槽函数来接收该信号,并将相应的字符输入到编辑框。 综上所述,通过以上三个步骤,我们可以在Qt实现一个支持中英文输入的软键盘部件。这个软键盘部件可以被集成到客户端应用程序,并提供用户在不同场景下的方便输入体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值