У меня есть приложение QT, и я использую собственные меню в OSX. У меня есть настраиваемые элементы меню, которые я создал, прикрепив свой собственный класс, производный от NSView, к NSMenuItems, которые я хочу нарисовать специально. Все это прекрасно работает; элементы меню отображаются вправо и правильно активируют функцию меню. Однако после активации функции меню меню не исчезает - оно по-прежнему отслеживает движение мыши. (Курсор по-прежнему выделяет элементы) Я провел несколько дней в поиске ответов в поисковой системе, и я не видел подобной проблемы в другом месте. Мой класс NSView прост; Я переопределил класс "rect" для рисования, и мое событие mouseUp находится здесь:
-(void)mouseUp:(NSEvent *)theEvent
{
NSMenuItem* item = [self enclosingMenuItem];
if ( item != nil ){
NSMenu *menu = [item menu];
if ( menu != nil ){
[menu cancelTracking];
[NSApp sendAction:[item action] to:[item target] from:item];
}
}
}
Я также пробовал использовать cancelTrackingWithoutAnimation, и я пробовал вызывать cancelTracking в родительском menuBar. Может ли кто-нибудь сказать мне, при каких обстоятельствах "cancelTracking" может не сработать? Я не уверен, что попробовать дальше. Спасибо.