QSystemTrayIcon Подменю QMenu с Qt 5

У меня есть программа, которая создает QMenu и добавляет QMenu в первое меню. Программа отлично работает на qt4, но когда компилирую с qt5, подменю не появляется. Вот пример кода:

QMenu *menu = this->menuBar()->addMenu("Menu");
QMenu *menu2 = menu->addMenu("Menu2");
QAction *act = menu2->addAction("act");

QSystemTrayIcon *qsti = new QSystemTrayIcon(this);
qsti->setContextMenu(menu);
qsti->show();

Menubar показывает все правильно, но systemtrayicon не показывает подменю. Скриншоты: menubar системный трей

Здесь вы можете видеть, что на втором изображении (системном трее) нет подменю. Есть ли обходной путь для решения этой проблемы? У меня Ubuntu 15.04 с Qt 5.4.1.


person isamert    schedule 13.08.2015    source источник


Ответы (1)


Шаг вперед это:

QMenu *menu = this->menuBar()->addMenu("Menu");
QMenu *menu2 = new QMenu("Menu2", menu);
QAction *act = menu2->addAction("act");
menu->addMenu(menu2);

QSystemTrayIcon *icon = new QSystemTrayIcon(this);
icon->setContextMenu(menu);
icon->show();

Сейчас показывает, что есть действие, но на моем Ubuntu оно отображается с какой-то ошибкой. Можешь попробовать?

person Alexander Tyapkov    schedule 13.08.2015
comment
Я пробовал, но ничего не изменилось. Опять же, строка меню отображается правильно, но QSystemTrayIcon не показывает действие. Я думаю, что это ошибка, связанная с qt5, но я не уверен, возможно, что-то изменилось после qt5. Если у вас есть окна, можете ли вы попробовать, если это работает? - person isamert; 13.08.2015
comment
В моем случае поведение немного изменилось. В вашем примере ничего не показано, в моем я вижу стрелку в меню, а после нажатия я вижу длинную строку, которая должна быть действием. Извините, я могу проверить это только под Ubuntu. - person Alexander Tyapkov; 13.08.2015
comment
Спасибо за ваш ответ. Ваша версия qt может быть другой, что может быть причиной вашего поведения примеров на вашем компьютере. Результат такой же на моем компьютере с этими двумя примерами. Кроме того, это похоже на настоящий баг. - person isamert; 13.08.2015
comment
Я использую Qt 5.5. Попробуйте сообщить об этом как об ошибке, возможно, позже они ее решат. - person Alexander Tyapkov; 13.08.2015