C++ 如何处理鼠标右键单击系统托盘?

C++ 如何处理鼠标右键单击系统托盘?,c++,qt,C++,Qt,我已将QSystemTrayIcon::ActivationReason连接到我的“handleClick”插槽,如下所示 connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,SLOT(handleClick(QSystemTrayIcon::ActivationReason))); mywindow::handleClick(QSystemTrayIcon::ActivationReason reas

我已将QSystemTrayIcon::ActivationReason连接到我的“handleClick”插槽,如下所示

connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,SLOT(handleClick(QSystemTrayIcon::ActivationReason)));

mywindow::handleClick(QSystemTrayIcon::ActivationReason reason)
{
    switch (reason)
    {
    case QSystemTrayIcon::Trigger:
    case QSystemTrayIcon::DoubleClick:
        handleLeftClickOnTray();
        break;
    case QSystemTrayIcon::MiddleClick:
        break;
    default:;
    }
}
我有另一个名为“HandlerRightClickOnSystemTray()”的函数,当鼠标右键单击系统托盘图标时,应该调用该函数。此函数用于创建QDialog框并显示它。如何处理系统托盘上的左键单击?

您可以使用左键单击时将调用的。菜单就位时不会触发

 case QSystemTrayIcon::Trigger:
    qDebug() << "Left clicked";
 break;
还是兰巴版本

connect(tray, &QSystemTrayIcoon::activated, [](QSystemTrayIcon::ActivationReason reason) { switch(reason) { /* .. */ } });

使用现代版本的Qt避免新代码中的
信号
插槽
宏。它们速度慢,未进行编译时检查,需要
moc
才能工作。更喜欢新的,编译时检查的,指向成员函数语法的指针。是的,我可以处理左键点击
QSystemTrayIcon::Trigger
。但我关心的是如何处理右键点击?我们需要为此安装事件吗?如果您能提供一个小的代码片段,那就太好了。@GUI新手:请阅读您的问题。您清楚地说了
如何处理系统托盘上的左键单击?
。您的问题已得到回答。@GUI新手单击鼠标右键,您可以将QSystemTrayIcon子类化,并覆盖/重新实现
事件
。QEvent参数应该告诉您使用的鼠标按钮。抱歉,这是一个错误。我已编辑了我的问题标题。
connect(tray, &QSystemTrayIcoon::activated, [](QSystemTrayIcon::ActivationReason reason) { switch(reason) { /* .. */ } });