QT5 多语言设计及键盘控制
来源:互联网 发布:网络电商平台 编辑:程序博客网 时间:2024/05/18 04:01
//主界面类
#ifndef MYKEYRESPOND_H
#define MYKEYRESPOND_H#include <QtWidgets/QWidget>
#include "ui_mykeyrespond.h"
#include <QKeyEvent>
#include <QMouseEvent>
#include "mychilddlg.h"
#include <QTextCodec>
#include <QtGui>
class MyKeyRespond : public QWidget
{
Q_OBJECT
public:
MyKeyRespond(QWidget *parent = 0);
~MyKeyRespond();
virtual void keyPressEvent(QKeyEvent *event);
//virtual void changeEvent(QEvent *e);
void setQTranslator(QTranslator *tra);
private:
Ui::MyKeyRespondClass ui;
MyChildDlg *m_dlg;
QTranslator* translator;
public slots:
void SetLanguage();
};
#endif // MYKEYRESPOND_H
#include "mykeyrespond.h"
#include <QMessageBox>
#pragma execution_character_set("utf-8")//解决中文乱码
MyKeyRespond::MyKeyRespond(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
m_dlg = new MyChildDlg;
connect(ui.m_butsetLanguage, SIGNAL(clicked()), this, SLOT(SetLanguage()));
}
MyKeyRespond::~MyKeyRespond()
{
}
//重写的键盘事件
void MyKeyRespond::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_F1://设置界面
{
m_dlg->exec();
break;
}
case Qt::Key_F2://导管信息界面
{
QMessageBox msgBox;
msgBox.setText(tr("Catheter information page F2"));
msgBox.exec();
break;
}
case Qt::Key_F3://病历列表界面
{
QMessageBox msgBox;
msgBox.setText(tr("Medical record list interface F3"));
msgBox.exec();
break;
}
case Qt::Key_F4://检查列表
{
QMessageBox msgBox;
msgBox.setText(tr("Check the list F4"));
msgBox.exec();
break;
}
case Qt::Key_F5://编辑界面
{
QMessageBox msgBox;
msgBox.setText(tr("The editing interface F5"));//-no-obsolete -codecfortr system
msgBox.exec();
break;
}
case Qt::Key_F6://登录界面(注销)
{
QMessageBox msgBox;
msgBox.setText(tr("Login screen F6"));
msgBox.exec();
break;
}
case Qt::Key_F12://帮助界面
{
QMessageBox msgBox;
msgBox.setText(tr("Help interface F12"));
msgBox.exec();
break;
}
default:
break;
}
//按下 空格 键
if (event->key() == Qt::Key_Space)
{
QMessageBox msgBox;
msgBox.setText(tr("You press the space key"));
msgBox.exec();
}
//按下Esc键 关闭当前窗口
if (event->key() == Qt::Key_Escape)
{
this->close();
}
// 是否按下Ctrl键+按键
if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_A))
{
QMessageBox msgBox;
msgBox.setText(tr("You have press the Ctrl+ A key."));
msgBox.exec();
}
// 是否按下Alt键+按键
if ((event->modifiers() == Qt::AltModifier) && (event->key() == Qt::Key_A))
{
QMessageBox msgBox;
msgBox.setText(tr("You have press the Alt+ A key."));
msgBox.exec();
}
// 是否按下Ctrl键+鼠标Left键
if ((event->modifiers() == Qt::ControlModifier) && (QApplication::mouseButtons() == Qt::LeftButton))
{
QMessageBox msgBox;
msgBox.setText(tr("You have press the Ctrl+ Left key."));
msgBox.exec();
}
}
int i = 0;
void MyKeyRespond::SetLanguage()
{
if (i == 1)
{
i = 0;
bool b = false;
b = translator->load("CN_zh.qm");//CN_zh mykeyrespond_en
qApp->installTranslator(translator);
ui.retranslateUi(this);
m_dlg->Refrush(0);
ui.m_labKeyRespond->setText(tr("Chinese"));
}
else
{
i = 1;
qApp->removeTranslator(translator);
ui.retranslateUi(this);
m_dlg->Refrush(1);
ui.m_labKeyRespond->setText(tr("English"));
}
}
void MyKeyRespond::setQTranslator(QTranslator *tra)
{
translator = tra;
}
//子界面类
#include <QDialog>
#include "ui_mychilddlg.h"
#include <QKeyEvent>
#include <QMouseEvent>
#include <QTextCodec>
#include <QtGui>
class MyChildDlg : public QDialog
{
Q_OBJECT
public:
MyChildDlg(QWidget *parent = 0);
~MyChildDlg();
virtual void keyPressEvent(QKeyEvent *event);
virtual void changeEvent(QEvent *e);
void Refrush(int i);
QTranslator translator;
private:
Ui::MyChildDlg ui;
};
#endif // MYCHILDDLG_H
#include "mychilddlg.h"
#include <QMessageBox>
#include "mychilddlgtwo.h"
MyChildDlg::MyChildDlg(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
MyChildDlg::~MyChildDlg()
{
}
//重写的键盘事件
void MyChildDlg::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_F1://设置界面
{
MyChildDlgTwo m_dlg;
m_dlg.exec();
break;
}
case Qt::Key_F2://导管信息界面
{
QMessageBox msgBox;
msgBox.setText(tr("Catheter information page F2"));
msgBox.exec();
break;
}
case Qt::Key_F3://病历列表界面
{
QMessageBox msgBox;
msgBox.setText(tr("Medical record list interface F3"));
msgBox.exec();
break;
}
case Qt::Key_F4://检查列表
{
QMessageBox msgBox;
msgBox.setText(tr("Check the list F4"));
msgBox.exec();
break;
}
case Qt::Key_F5://编辑界面
{
QMessageBox msgBox;
msgBox.setText(tr("The editing interface F5"));//-no-obsolete -codecfortr system
msgBox.exec();
break;
}
case Qt::Key_F6://登录界面(注销)
{
QMessageBox msgBox;
msgBox.setText(tr("Login screen F6"));
msgBox.exec();
break;
}
case Qt::Key_F12://帮助界面
{
QMessageBox msgBox;
msgBox.setText(tr("Help interface F12"));
msgBox.exec();
break;
}
default:
break;
}
//按下 空格 键
if (event->key() == Qt::Key_Space)
{
QMessageBox msgBox;
msgBox.setText(tr("You press the space key"));
msgBox.exec();
}
//按下Esc键 关闭当前窗口
if (event->key() == Qt::Key_Escape)
{
this->close();
}
// 是否按下Ctrl键+按键
if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_A))
{
QMessageBox msgBox;
msgBox.setText("You have press the Ctrl+ A key.");
msgBox.exec();
}
// 是否按下Alt键+按键
if ((event->modifiers() == Qt::AltModifier) && (event->key() == Qt::Key_A))
{
QMessageBox msgBox;
msgBox.setText("You have press the Alt+ A key.");
msgBox.exec();
}
// 是否按下Ctrl键+鼠标Left键
if ((event->modifiers() == Qt::ControlModifier) && (QApplication::mouseButtons() == Qt::LeftButton))
{
QMessageBox msgBox;
msgBox.setText("You have press the Ctrl+ Left key.");
msgBox.exec();
}
}
void MyChildDlg::changeEvent(QEvent *e)
{
//QWidget::changeEvent(e);
//switch (e->type()) {
//case QEvent::LanguageChange:
// ui.retranslateUi(this);
// printf("changeEvent\n");
// break;
//default:
// break;
//}
}
void MyChildDlg::Refrush(int i)
{
if (i==1)
{
bool b = false;
b = translator.load("mykeyrespond_en.qm");
qApp->installTranslator(&translator);
ui.retranslateUi(this);
}
else
{
qApp->removeTranslator(&translator);
ui.retranslateUi(this);
}
}
//入口Main
#include "mykeyrespond.h"
#include <QtWidgets/QApplication>
//#include <QTextCodec>
//#include <QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator qtTranslator;
qtTranslator.load("CN_zh.qm"); //加载语言包
a.installTranslator(&qtTranslator);
MyKeyRespond w;
w.setQTranslator(&qtTranslator);
w.show();
return a.exec();
}
- QT5 多语言设计及键盘控制
- FPGA基础设计(二):PS2键盘控制及短按、长按
- 【Qt5开发及实例】32、实现键盘的监控操作
- flash 游戏设计笔记:键盘控制
- 控制小键盘及键盘灯状态
- 控制小键盘及键盘灯状态
- Javascript键盘事件及输入控制
- unity 鼠标控制第一人称视角及键盘控制移动
- verilog语言的ps2键盘驱动设计
- C语言 键盘编码 及 用法
- 键盘控制:
- 键盘控制
- 键盘控制
- c语言下对键盘鼠标的控制
- C语言+EasyX编写键盘控制角色移动
- UITextField文本框显示及对键盘的控制
- 实现鼠标点击及键盘控制下拉菜单事件
- 流程控制语句—顺序结构语句及键盘录入
- Count and Say
- Shell $0, $#, $*, $@, $?, $$
- MaterialDesign学习篇(六),调色板Palette的学习
- Apache配置虚拟域名
- Docker界面管理工具
- QT5 多语言设计及键盘控制
- 回声消除的原理和应用场景
- can't be deserialize the current JSON arry (e.g[1,2,3])into type [···] because the type requires a J
- Android平台下OpenGL初步
- 在中兴新支点操作系统上可以运行QQ啦!
- 牛客网编程题-滑动窗口的最大值(java)
- 2017.08.01回顾 xgboost get_dummies 尽可能留变量
- LeetCode习题记录(2)Add Two Numbers
- 指纹识别解锁实现--iOS