QSystemTrayIcon激活信号:不带触发器的DoubleClick

时间:2015-10-16 09:18:40

标签: c++ qt

我想在左键单击上显示上下文菜单,然后双击运行应用程序。 为此,我有下一个代码:

...
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。结果上下文菜单显示并隐藏片刻。 有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:2)

您需要处理鼠标事件,而不是使用slotActivated。

虽然QSystemTrayIcon中没有这些内容直接可用,但它允许您install an event filter并从那里处理鼠标事件。