我几乎尽可能地尝试将任务栏图标的activate()信号挂钩到相应的插槽。但是,我不明白为什么Qt(Qt5 Cretor)说我没有匹配的插槽功能。
Qt错误:
C:\用户\马铃薯\桌面\ CCT-主\ CCTracker \ cctsystemtray.cpp:40: 错误:没有匹配的函数用于调用 'QObject :: connect(QSystemTrayIcon *&,const char *,CCTSystemTray * const,const char *)'this, SLOT(systrayActivated(QSystemTrayIcon :: ActivationReason)))
据我所知,根据Qt Documentation,
activate()信号用于捕捉鼠标事件,例如点击和双击任务栏图标。起初尝试我认为它只是信号和插槽,但无论出于何种原因激活()只是不适合。如果我尝试将activate()连接到另一个类的插槽,由于指针错误,一切都会失败。
以下是 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";
}
如果有人可以帮我脱毛,那就太好了!
谢谢大家。
答案 0 :(得分:1)
您的类CCTSystemTray
有一个插槽,但它不是QObject
(它不是从QObject派生的,也不是从QObject派生的其他类),而且还需要Q_OBJECT
宏在您的类声明中,然后信号和插槽将工作。