C++ 如何处理鼠标右键单击系统托盘?
我已将QSystemTrayIcon::ActivationReason连接到我的“handleClick”插槽,如下所示C++ 如何处理鼠标右键单击系统托盘?,c++,qt,C++,Qt,我已将QSystemTrayIcon::ActivationReason连接到我的“handleClick”插槽,如下所示 connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,SLOT(handleClick(QSystemTrayIcon::ActivationReason))); mywindow::handleClick(QSystemTrayIcon::ActivationReason reas
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) { /* .. */ } });