QSystemTrayIcon激活信号:双击无触发

QSystemTrayIcon activated signal: DoubleClick without Trigger

本文关键字:双击 激活 信号 QSystemTrayIcon      更新时间:2023-10-16

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

...
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());
}

它的工作原理,但双击的情况下,我有两个插槽调用-一个触发,然后只有双击。结果显示上下文菜单和隐藏在一个时刻。有办法避免这种情况吗?

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

虽然这些在QSystemTrayIcon中不直接可用,但它确实允许您安装事件过滤器并从那里处理鼠标事件。