【发布时间】:2014-04-08 04:39:11
【问题描述】:
我已经尝试了几乎所有可能的方法来将任务栏图标的激活()信号连接到相应的插槽。但是,我不明白为什么 Qt(Qt5 Cretor) 说我没有插槽的匹配功能。
Qt 错误:
C:\Users\potato\Desktop\CCT-master\CCTracker\cctsystemtray.cpp:40: 错误:没有匹配的调用函数 'QObject::connect(QSystemTrayIcon*&, const char*, CCTSystemTray* const, const char*)'this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason)))
据我所知,根据Qt Documentation,
activated() 信号用于捕获鼠标事件,例如任务栏图标的单击和双击。起初我认为它只是信号和插槽,但无论出于何种原因,activated() 都不适合。如果我尝试将 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";
}
如果有人可以帮助我摆脱拔毛,那就太好了!
谢谢大家。
【问题讨论】:
-
我认为解决方案在这里qt.developpez.com/doc/5.0-snapshot/desktop-systray。我试过一次,但没有运气。我明天再试一次,看看是否有效。
标签: c++ windows qt qt5 taskbar