大佬教程收集整理的这篇文章主要介绍了c – 如何动态翻译qt应用程序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的尝试:
我将我的语言QAction连接到一个插槽,该插槽获取用户选择的语言,然后将其保存并转到另一个功能来安装翻译.这一切都发生在QMainWindow之外.
void MainCore::GetAndSaveLanguage(bool){ //GetTing the language the users wants. bool OKPressed; QString Language = QInputDialog::getItem(NULL,InputDialogString,InputDialogString + ":",Languages,false,&OKPressed) .remove(QRegExp("*(",Qt::CaseSensitive,QRegExp::Wildcard)).remove(')'); //checking if ok button was pressed. if(OKPressed){ //Saving the languages. SetTings->beginGroup("SetTings"); SetTings->SETVALue("Language",LanguagE); SetTings->endGroup(); //update language. updateTranslations(LanguagE); } } void MainCore::updateTranslations(QString LanguagE){ //SetTing the translation for the qt widgets. QTranslator QtTranslator; QtTranslator.load("qt_" + Language,QLibraryInfo::LOCATIOn(QLibraryInfo::TranslationsPath)); QApplication::instance()->installTranslator(&QtTranslator); //SetTing the translation for the program. QTranslator AppTranslator; AppTranslator.load("app_" + Language,":/translations"); QApplication::instance()->installTranslator(&AppTranslator); }
我还在QMainWindow上有一个函数,它设置屏幕的所有文本,如下所示:
void Window::SetText(){ Menu->settitle(tr("File")); ... }
void Window::changeEvent(QEvent *event){ if(event->type() == QEvent::LanguageChangE){ SetText(); }else{ QWidget::changeEvent(event); } }
void MainCore::updateTranslations(QString LanguagE) { //SetTing the translation for the qt widgets. QTranslator QtTranslator; QtTranslator.load("qt_" + Language,QLibraryInfo::LOCATIOn(QLibraryInfo::TranslationsPath)); QApplication::instance()->installTranslator(&QtTranslator); // this is a bad reference ... } // QtTranslator will go out of scope
只要您的应用程序正在运行,您就需要QtTranslator才能生存.所以一种选择是在堆中分配它
QTranslator * QtTranslator = new QTranslator;
以上是大佬教程为你收集整理的c – 如何动态翻译qt应用程序?全部内容,希望文章能够帮你解决c – 如何动态翻译qt应用程序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。