QT5: QWidgetAction не работает в контекстном меню QSystemTray - PullRequest
0 голосов
/ 07 мая 2020

В настоящее время я разрабатываю приложение только для 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 с макетами для добавления нескольких виджетов, тоже ничего не произойдет.

...