我已经为QT应用程序实现了托盘图标菜单。但点击其他地方后,托盘图标菜单不会隐藏。以下是我的代码:
m_trayIconMenu = new QMenu(this);
m_trayIconMenu->addAction(m_restoreAction);
m_trayIconMenu->addAction(m_quitAction);
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setContextMenu(m_trayIconMenu);
答案 0 :(得分:3)
尝试删除如下所示的this指针。将m_trayIconMenu绑定到QSystemTrayIcon而不是父指针。
m_trayIconMenu = new QMenu();
m_trayIconMenu->addAction(m_restoreAction);
m_trayIconMenu->addAction(m_quitAction);
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setContextMenu(m_trayIconMenu);
答案 1 :(得分:1)
如果您在Windows中工作,则必须执行另一个win32 api SetForegroundWindow()
SetForegroundWindow(m_trayIconMenu->parent()->winId())
建议在插槽中执行#aboutToShow' QMenu。
这个api适用于我,你可以试试。