这是 Mac OS X 的一项不容易禁用的功能。您会注意到 Mac 操作系统上几乎每个应用程序都有它。它由操作系统自动添加到编辑菜单中,以允许输入国际字符。
从您的问题看来,但不太清楚,当您最初创建“编辑”菜单时,“特殊字符...”菜单项最初是最后一个菜单项,但一旦成为第一个菜单项editMenu->clear()
已被调用。你可以走的一条路线是clear()
通过菜单,您可以delete
菜单并完全重新创建它们。不过,您的编辑菜单看起来相当静态。也许根本不需要重新创建。
现在,也就是说,如果您确实确定需要删除此菜单项,有几种方法可以实现这一点。
第一个也是最不理想的一个是根本没有“编辑”菜单。如果没有标题为“编辑”的菜单,Mac OS 将不会添加“特殊字符”菜单项。
第二种方法需要一些特定于平台的 Objective-C 代码。显然,这只能内置到 Mac OS 上的项目中。
菜单删除器.m:
#include <Foundation/NSUserDefaults.h>
void deleteSpecialCharacters()
{
[[NSUserDefaults standardUserDefaults]
setBool:YES forKey:@"NSDisabledCharacterPaletteMenuItem"];
}
菜单删除器.h
#ifndef MENUDELETER_H_
#define MENUDELETER_H_
void deleteSpecialCharacters();
#endif
最后,在 main.cpp 中:
#include <QApplicaiton>
#include "MenuDeleter.h"
int main(int argc, char **argv)
{
#ifdef Q_OS_MAC
deleteSpecialCharacters();
#endif
QApplication app(argc, argv);
....
return app.exec();
}
这就是让它完全消失的方法。但问题是,您真的想阻止用户在您的应用程序中输入特殊字符吗?