QT 多线程 多语言

多线程

QThread类 

 重写run()方法  需继承自QThread类(自定义类)

自定义对象 ->start();//启动线程

线程的关闭方法需自己重新定义

###### 注多线程并发执行的时候 ,共享数据的准确性是不确定的

QMutex 互斥锁   可定义全局对象

 QMutex .lock();//加锁   

------操作共享的数据--------

QMutex.unlock();//解锁

多语言 国际化Qt

tr(" xxxx ");用来获取需要国际化翻译的文本(64位MinGW)

resize(int,int);//设置窗体的大小

1. 项目中所需要翻译的字符串都设置为tr(" xxxx ");
2. lupdate.exe 编译生成xxxx.ts文件
3. linguist.exe 进行翻译
4. lrelease.exe 生成xxx.qm文件
5. 使用

2.1  工程文件中添加 TRANSLATIONS = lang_en.ts  //名字随意 在项目中生成ts文件多个的话用 \隔开可实现多语言 如 TRANSLATIONS = lang_en.ts \lang_zh.cs        

工具-外部-qt语言家-更新翻译(lupdate)。生成xxx.ts文件    

或者打开lupdate.exe复制所在文件侠(bin) 打开cmd管理员运行输入目录路径     在输入lupdate空格项目路径\项目工程文件名称.por

(如果没有编译器就添加环境变量   找到g++的路径(bin)-我的电脑-属性-系统-高级-添加环境变量-系统环境变量中path-编辑-新建-g++的路径(bin)-确定) ;重启cmd命令行就OK了

3.1找到linguist.exe(和lupdate.exe都在qt目录下),打开这个程序 打开ts文件  会捕捉到需要翻译的原文  在下面两个输入框输入要翻译之后的文本 再点击绿色的勾勾  就翻译完一条了以此类推 保存

文件菜单点击发布生成 xxx.qm文件

5.1主函数(main.cpp)中QApplication  a(argc,argv);后面

QTramslator 翻译类

QTramslator * tramslator=new QTramslator ;

tramslator->load("xxx.qm");//加载
a.installTranslator(tramslator);//应用程序设置翻译器




a.removeTranslator(tramslator);//应用程序移除翻译器//QApp是全局的的实例加头文件<QApplication>就可用
delete tramslator;//释放这个翻译器
tramslator=nullptr;//置空


注 xxx.qm文件须在运行路径

运行

tr("xxxx","xxxx");可以为这个字符串设置ID进行翻译 前面是id后面是语言

猜你喜欢

转载自blog.csdn.net/qq_45743563/article/details/108854850