Наткнулся тут на одну багу в Qt может кому то будет полезна, для когото может она давно уже и извесна. Этот баг я словил только под маком, под Windows он не наблюдается, так же и под linux вроде на него не натыкался. Связан баг с иконкой в трее и саб меню. Если мы добавляем пункты в саб меню в трей, то у нас сразу пропадает возможность сделать setEnable(false). Вот пример кода
QMenu *trayMenu = new QMenu();
QSystemTrayIcon *trayIcon = new QSystemTrayIcon;
QAction *actionFirst = new QAction("First",trayIcon);
QAction *actionSecond = new QAction("Second",trayIcon);
actionSecond->setEnabled(false);
QMenu *subMenu = new QMenu("Sub menu");
QAction *actionSubFirst = new QAction("Sub first",subMenu);
QAction *actionSubSecond = new QAction("Sub second",subMenu);
actionSubSecond->setEnabled(false);
subMenu->addAction(actionSubFirst);
subMenu->addAction(actionSubSecond);
trayMenu->addAction(actionFirst);
trayMenu->addAction(actionSecond);
trayMenu->addMenu(subMenu);
trayIcon->setContextMenu(trayMenu);
QPixmap pxm(16,16);
pxm.fill(QColor(Qt::red));
trayIcon->setIcon(QIcon(pxm));
trayIcon->show();
в trayMenu один пукт стоит в дизайбл и все здорово ,но в subMenu пункт actionSubSecond всеравно включен
При этом setVisible отрабатывает хорошо.
Qt 4.8.1
Mac OS X 10.7.4