单击其他位置后,TrayMenu无法隐藏

时间:2012-03-01 02:40:29

标签: qt

我已经为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);

2 个答案:

答案 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适用于我,你可以试试。