Qt最小化任务栏图标鼠标事件

Qt Minimized Taskbar Icon Mouse Event

本文关键字:鼠标 事件 图标 任务栏 最小化 Qt      更新时间:2023-10-16

我几乎已经尽了一切可能将任务栏图标的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就会起作用。