Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTranslator奇怪行为_Qt_User Interface - Fatal编程技术网

QTranslator奇怪行为

QTranslator奇怪行为,qt,user-interface,Qt,User Interface,我使用QT5.1.1在MacOS上开发了一个程序,并开始使用翻译工具将我的程序翻译成法语(目前)。我使用下面的代码安装.qm文件: QApplication a(argc, argv); QTranslator translator; translator.load("/path_to_qm_file"); a.installTranslator(&translator); 使用英文文件,我得到了About和Preferences子菜单,它会自动进入Joker菜单,如下所示: 当我加

我使用QT5.1.1在MacOS上开发了一个程序,并开始使用翻译工具将我的程序翻译成法语(目前)。我使用下面的代码安装
.qm
文件:

QApplication a(argc, argv);
QTranslator translator;
translator.load("/path_to_qm_file");
a.installTranslator(&translator);
使用英文文件,我得到了
About
Preferences
子菜单,它会自动进入
Joker
菜单,如下所示:

当我加载法语文件
About
Preferences
时,转到
file
菜单:


如何让Qt理解我希望第一个行为是它应该使用的唯一行为?

这是由于自动推断
QAction
菜单角色。该推论适用于英文文本,但不适用于法文,尤其是您使用了错误的属性翻译(不是苹果HIG的翻译)。您需要使用
QAction::setMenuRole
Preferences
操作的菜单角色显式设置为
QAction::PreferencesRole
。这将解决问题