C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 在Qt应用程序菜单栏的主菜单中添加和本地化菜单项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,这里是Evernote菜单的截图,用法语本地化:

[]

如您所见,主菜单中的所有菜单项(通过主菜单,我的意思是名称为应用程序名称菜单项,如此处为EvernotE)均使用法语进行本地化. Evernote应用程序本身带来了许多菜单项,例如ÉvaluezEvernotepour Mac(适用于Mac的费率EvernotE),Information du compte …(帐户信息…)等.另外还有标准的OS X提供的菜单Quit Evernote,Preferences等物品也是本地化的.

我的问题:

>如何在此主菜单添加新项目?如何访问此菜单添加项目?
>我如何根据我的应用本地化来本地化这些项目,OS X提供的认项目和我添加的项目?
>在Evernote菜单中,除了“服务”菜单选项外,所有内容似乎都已本地化(但子菜单选项已本地化!)?这不能也是本地化的吗?

我尝试过的:

@H_616_19@fMenuBar = fMainWindow->menuBar(); fMenuFile = fMenuBar->addMenu(QObject::tr(qPrintable(String_Class::FileMenu))); //"File" in English,translated into other languages fAboutAppAct = new QAction(QObject::tr(qPrintable(String_Class::About_App)),fMainWindow); //prints "About App",localized in all languages fMenuFile->addAction(fAboutAppAct); fAboutAppAct->setMenuRole(QAction::AboutRolE); //otherwise it sits with the other file menu options in the File menu //reset UI language slot,called whenver UI language is reset. It retranslates all Strings in all menus,except this void AppMenu::reTranslateUISlot() { fAboutAppAct->setText(QObject::tr(qPrintable(String_Class::About_App))); }

解决方法

@H_262_24@ 也许你可以在MainWindow或AppMenu中重新实现changeEvent.

@H_616_19@void MainWindow::changeEvent(QEvent *event) { if (event->type() == QEvent::LanguageChangE) { this->retranslateUi(this); quickStart->retranslateUi(quickStart); //etc... } else { QMainWindow::changeEvent(event); } }

您可以强制Widgets重新翻译自己.但是你需要先注册一些QTranslator.

例如,在MainWindow的构造函数中(或在某些配置对话框中),如果可以在运行时更改语言(我在软件中完成的操作):

@H_616_19@CustomizeOptionsDialog::CustomizeOptionsDialog(QWidget *parent) : QDialog(parent,Qt::Tool) { // Load the language of the application customTranslator.load(languages.value( SetTingsPrivate::instance()->language()) ); // Translate standard buttons (OK,Cancel,...) defaultQtTranslator.load("qt_" + SetTingsPrivate::instance()->language(),QLibraryInfo::LOCATIOn(QLibraryInfo::TranslationsPath)); QApplication::installTranslator(&customTranslator); QApplication::installTranslator(&defaultQtTranslator); }

其中language()返回“fr”,“gb”或“cs”(从选项中选择新语言时发出的信号初始化).

@H_616_19@/** Change language at runtime. */ void CustomizeOptionsDialog::changeLanguage(const QString &languagE) { QString lang = languages.value(languagE); SetTingsPrivate *setTings = SetTingsPrivate::instance(); // If the language is successfully loaded,tells every widget that they need to be redisplayed if (!lang.isEmpty() && lang != setTings->language() && customTranslator.load(lang)) { setTings->setLanguage(languagE); defaultQtTranslator.load("qt_" + lang,QLibraryInfo::LOCATIOn(QLibraryInfo::TranslationsPath)); QApplication::installTranslator(&customTranslator); /// TODO: reload plugin UI QApplication::installTranslator(&defaultQtTranslator); } else { labelStatusLanguage->setText(tr("No translation is available for this language :(")); } }

我希望它有所帮助.

大佬总结

以上是大佬教程为你收集整理的c – 在Qt应用程序菜单栏的主菜单中添加和本地化菜单项全部内容,希望文章能够帮你解决c – 在Qt应用程序菜单栏的主菜单中添加和本地化菜单项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。