В настоящее время я разрабатываю приложение только для SystemTray в Qt 5. Поэтому я хочу добавить виджеты, такие как кнопки и метки, в контекстное меню значка в трее. Из-за документации Qt это должно быть реализовано с помощью QWidgetAction . В качестве примера я создал QLabel внутри контекстного меню, используя:
TrayApp::TrayApp(QObject *parent) : QSystemTrayIcon(parent)
{
QIcon trayIcon(":/icons/hi32-app.png");
setIcon(trayIcon);
QMenu *trayMenu = new QMenu();
QLabel* pLabelWidget = new QLabel("Test");
QWidgetAction *labelWidgetAct = new QWidgetAction(0);
labelWidgetAct->setDefaultWidget(pLabelWidget);
trayMenu->addAction(labelWidgetAct);
setContextMenu(trayMenu);
}
Значок в трее появляется и имеет контекстное меню с одним элементом, но этот элемент пуст. Если использовать QButton или более продвинутые QWidgets с макетами для добавления нескольких виджетов, тоже ничего не произойдет.