gpt4 book ai didi

c++ - 如何处理鼠标右键单击 QSystemTrayIcon?

转载 作者:行者123 更新时间:2023-11-30 05:02:54 24 4
gpt4 key购买 nike

我已将 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:;
}
}

我有另一个名为“handleRightClickOnSystemTray()”的函数,当鼠标右键单击系统托盘图标时应该调用该函数。此函数创建一个 QDialog 框并显示它。如何处理系统托盘上的鼠标右键事件?

最佳答案

您可以使用 QSystemTrayIcon::Trigger当您左键单击时将调用它。 QSystemTrayIcon::DoubleClick菜单就位时不会触发。

 case QSystemTrayIcon::Trigger:
qDebug() << "Left clicked";
break;

如果这对您不起作用,那么您必须重新实现 bool QSystemTrayIcon::event(QEvent *e)并安装事件过滤器以检查按下了哪个按钮。

新的信号槽语法是

connect(tray, &QSystemTrayIcoon::activated, this, &MainWindow::handleClick /* assuming it's MainWindow */);

或者兰巴版本

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

关于c++ - 如何处理鼠标右键单击 QSystemTrayIcon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49631493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com