QSystemTrayicon左右单击左右单击
QSystemTrayIcon handle left and right click separately?
i有一个称为statusicon的类,该类扩展了qsystemtrayicon。我想设置它,以便右键单击打开上下文菜单,左键单击打开一个窗口。
当前默认行为似乎是左右单击"打开上下文"菜单。
我需要找到一种方法来阻止左键单击并运行自己的代码。
从文档中,看起来可以使用EventFilter来实现这一目标,我已经在Susticy中设置了EventFilter方法,其中QDEBUG中的其中有一个。这不会用右键或左键单击。
我使用以下代码线安装了它:
this->installEventFilter(this)
我想知道它是否已成为已经覆盖虚拟方法,因为我将qsystemtrayicon作为超级类。
有人知道为什么不称呼事件窗口吗?
有人可以想到一种实现此功能的方法吗?
您不需要eventFilter
。左点击:
//somewhere in constructor
connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(showHide(QSystemTrayIcon::ActivationReason)));
//...
void MainWindow::showHide(QSystemTrayIcon::ActivationReason r)
{
if (r == QSystemTrayIcon::Trigger)
{
if (!this->isVisible()) {
this->show();
} else {
this->hide();
}
}
}
菜单,只需使用setContextMenu()
:
QMenu *menu = new QMenu(this);
//for example
menu->addAction(showHideAct);
menu->addAction(optionAct);
menu->addAction(infoAct);
menu->addSeparator();
menu->addAction(quitAct);
tray = new QSystemTrayIcon();
tray->setIcon(QIcon("://data/tray.png"));
tray->setContextMenu(menu);//important method for you
tray->show();
相关文章:
- QTreeView幻灯片多选后无法使用单击选择
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- QML TableView 使用 QtQuick.Controls 2 单击行
- ImGui 在单击按钮后冻结
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 我想使用此代码单击某个特定窗口,但它无法正常工作
- 如何在QSplashScreen中禁用鼠标单击
- 单击一个按钮后创建一个按钮
- C++鼠标单击时的屏幕截图不起作用
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 标签检测鼠标单击 c++
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在单击 QPushButton 时调用带有参数的函数
- 如何在单击按钮FLTK的确切时刻获得小部件的值
- 如何使用鼠标单击选择多个 QLabel 对象?
- WM_PAINT基于按钮单击
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- QSystemTrayicon左右单击左右单击