Qt最小化任务栏图标鼠标事件
Qt Minimized Taskbar Icon Mouse Event
我几乎已经尽了一切可能将任务栏图标的activated()信号挂接到相应的插槽。然而,我不明白为什么Qt(Qt5 Cretor)说我没有插槽的匹配功能。
Qt错误:
C: \用户\土豆\桌面\ CCT主机\ CCTracker\ctsystemtray.cpp:40:错误:没有可用于调用的匹配函数'QObject::connect(QSystemTrayIcon*&,const char*,CCTSystemTray*const、const char*)的值,SLOT(systrayActivated(QSystemTrayIcon::ActivationReason))
据我所知,根据Qt文档,
activated()信号用于捕捉鼠标事件,例如任务栏图标的单击和双击。一开始我以为这只是信号和插槽,但后来无论出于什么原因,activated()都不适合。如果我尝试将activated()连接到另一个类的插槽,那么由于指针错误,一切都会失败。
以下是CCTSystemTray.h:内的工作部件
class CCTSystemTray
{
public:
CCTSystemTray();
void initSystemTray(QWidget *rootWindow);
private:
QSystemTrayIcon* systray;
public slots:
void systrayActivated(QSystemTrayIcon::ActivationReason);
};
和CCTSystemTray.cpp:
// Above are Class declearations, menu items, etc...
QObject::connect(this->systray, SIGNAL(QSystemTrayIcon::activated(QSystemTrayIcon::ActivationReason reason)),
this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason)));
}
void CCTSystemTray::systrayActivated(QSystemTrayIcon::ActivationReason)
{
qDebug() << "Hello";
}
完整的代码示例可以在这里的pastebin上找到。
如果有人能帮我拔头发,那就太好了!
谢谢大家。
您的类CCTSystemTray
有一个slot,但它不是QObject
(它不是从QObject派生的,也不是从QOObject派生的另一个类),而且您需要在类声明中使用Q_OBJECT
宏,然后信号和slot就会起作用。
相关文章:
- 跟踪滚动条上的鼠标事件
- Qt-如何在Qt3DWindow上获取鼠标事件
- Qt:如何防止为平板电脑事件生成鼠标事件
- 如何使用 c++ mfc 在屏幕上获取鼠标事件
- WM_PAINT和鼠标事件.MFC/WIN32 API.
- 通过鼠标事件传递数据
- 鼠标区域窃取QQuickItem的鼠标事件
- Windows Console API鼠标事件只是进入选择模式
- 无法跟踪鼠标事件 OpenCV
- Qt. 忽略小部件中的任何鼠标事件,而不是另一个小部件
- WXWIDGETS将鼠标事件连接到WXPAINTDC上的形状对象以删除
- Qt/Qml - 触发 QApplication/QQmlApplicationEngine 事件(键和鼠标事件)
- Juce 鼠标事件不起作用
- 是否可以捕获全局鼠标事件
- 单击QCHART图的轴时捕获鼠标事件
- OpenCV 鼠标事件始终在鼠标滚动时接收事件 10 和 *flag* 0
- 鼠标事件选取器打开场景图
- 将鼠标事件发送到虚拟现实OpenGL场景中的QtQuick窗口
- 处理鼠标事件SFML
- 是否可以在 wxFrame 中捕获鼠标事件