我想在左键单击上显示上下文菜单,然后双击运行应用程序。 为此,我有下一个代码:
...
connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slotActivated(QSystemTrayIcon::ActivationReason)));
...
void MyTray::slotActivated(ActivationReason reason)
{
if(reason==QSystemTrayIcon::DoubleClick)
startApp();
else
if(reason==QSystemTrayIcon::Trigger
|| reason==QSystemTrayIcon::MiddleClick)
contextMenu()->popup(QCursor::pos());
}
它有效,但对于双击案例,我有两个插槽调用 - 一个用于触发器,只有一个用于DoubleClick。结果上下文菜单显示并隐藏片刻。 有没有办法避免这种情况?
答案 0 :(得分:2)
您需要处理鼠标事件,而不是使用slotActivated。
虽然QSystemTrayIcon中没有这些内容直接可用,但它允许您install an event filter并从那里处理鼠标事件。