Это особенность Mac OS X, которую нелегко отключить.Вы заметите, что почти у каждого приложения в Mac OS есть это.Он автоматически добавляется операционной системой в меню «Правка», чтобы разрешить ввод международных символов.
Как видно из вашего вопроса, но не совсем ясно, что при первоначальном создании меню «Правка» используются специальные символы... пункт меню изначально является последним пунктом меню, но становится первым пунктом меню после вызова editMenu->clear()
.Один путь, по которому вы можете пойти, - вместо clear()
меню, вы можете delete
меню и полностью воссоздать их.Ваше меню редактирования выглядит довольно статично.Может быть, его вообще не нужно воссоздавать.
Теперь, с другой стороны, если вы действительно уверены, что вам нужно избавиться от этого пункта меню, есть несколько способов сделать это.
Первый и наименее желательный вариант - просто не иметь меню «Правка».Если меню «Редактировать» не существует, Mac OS не добавит пункт меню «Специальные символы».
Второй метод требует небольшого кода Objective-C для конкретной платформы.Очевидно, это должно быть встроено в ваш проект только в Mac OS.
MenuDeleter.m:
#include <Foundation/NSUserDefaults.h>
void deleteSpecialCharacters()
{
[[NSUserDefaults standardUserDefaults]
setBool:YES forKey:@"NSDisabledCharacterPaletteMenuItem"];
}
MenuDeleter.h
#ifndef MENUDELETER_H_
#define MENUDELETER_H_
void deleteSpecialCharacters();
#endif
И, наконец, в основном.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();
}
Так вот, как заставить его полностью исчезнуть.Но вопрос в том, действительно ли вы хотите запретить пользователю вводить специальные символы в ваше приложение?