#include "QHMainWindow.h"
#include "ui_QHMainWindow.h"
#include <QPainter>
#include <QPainterPath>
#include <QDebug>
QHMainWindow::QHMainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::QHMainWindow)
{
ui->setupUi(this);
}
QHMainWindow::~QHMainWindow()
{
delete ui;
}
void QHMainWindow::setTranslator(QTranslator *translator)
{
m_translator = translator;
}
void QHMainWindow::changeEvent(QEvent *event)
{
switch (event->type())
{
case QEvent::LanguageChange:
translateUI();
qDebug()<<"BBBBBBBBBBBBBB";
break;
default:
QWidget::changeEvent(event);
}
}
void QHMainWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pen(Qt::red, 2, Qt::SolidLine);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(pen);
painter.setBrush(Qt::transparent);
QFont font("宋体", 60, QFont::Bold);
QFontMetrics fm(font);
QString str(tr("Happy New Year"));
QPainterPath textPath;
textPath.addText((width() - fm.horizontalAdvance(str)) / 2, (height() + fm.height()) / 2 - fm.descent(), font, str);
painter.drawPath(textPath);
}
void QHMainWindow::translateUI()
{
ui->switchLanguageButton->setText(tr("Switch Language"));
update();
}
void QHMainWindow::slotSwitchLanguage(QHSettingDialog::Language language)
{
QString qmFile = ":/language_zh.qm";
switch(language)
{
case QHSettingDialog::Chinese:
qmFile = ":/language_zh.qm";
break;
case QHSettingDialog::EngLish:
qmFile = ":/language_en.qm";
break;
}
m_translator->load(qmFile);
qDebug()<<"AAAAAAAAAAAAAAAAAA";
}
void QHMainWindow::on_switchLanguageButton_clicked()
{
QHSettingDialog settingDialog;
connect(&settingDialog, &QHSettingDialog::signalSwitchLanguage, this, &QHMainWindow::slotSwitchLanguage);
settingDialog.exec();
}
没有合适的资源?快使用搜索试试~ 我知道了~
Qt国际化(I18N)
共14个文件
cpp:3个
ui:2个
ts:2个
需积分: 0 0 下载量 95 浏览量
2023-12-31
22:38:38
上传
评论
收藏 7KB RAR 举报
温馨提示
国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),说起Qt,就不能避开国际化,国际化步骤: 如果Qt程序中有QObject::tr()包裹的字符串,对这个应用程序的翻译主要包含三步: ①.运行lupdate工具从C++源代码中提取要翻译的文本,这时会生成一个.ts文件,这个文件是XML格式的; ②.在Qt Linguist中打开.ts文件,并完成翻译工作; ③.运行lrelease工具从.ts文件中获得.qm文件,它是一个二进制文件。这里的.ts文件是供翻译人员使用的,而在程序运行时只需要使用.qm文件,这两个文件都是与平台无关的。 详见博客:https://blog.csdn.net/caoshangpa/article/details/135319397
资源推荐
资源详情
资源评论
收起资源包目录
i18n.rar (14个子文件)
i18n
resource.qrc 135B
QHMainWindow.h 804B
language_zh.ts 1KB
i18n.pro.user 24KB
QHMainWindow.cpp 2KB
QHSettingDialog.cpp 1KB
main.cpp 360B
i18n.pro 397B
language_en.qm 23B
language_zh.qm 331B
QHSettingDialog.ui 1KB
QHSettingDialog.h 700B
language_en.ts 2KB
QHMainWindow.ui 1KB
共 14 条
- 1
资源评论
草上爬
- 粉丝: 8261
- 资源: 167
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功