Я пытался практически всеми возможными способами подключить активированный () значок на панели задач в соответствующий слот. Однако я не понимаю, почему Qt (Qt5 Cretor) говорит, что у меня нет соответствующей функции для слота.
Ошибка Qt:
C: \ Users \ картофельный \ Desktop \ CCT-мастер \ CCTracker \ cctsystemtray.cpp: 40:
ошибка: нет соответствующей функции для вызова
«QObject :: подключить (QSystemTrayIcon *&, const char *, CCTSystemTray *
const, const char *) ‘это,
SLOT (systrayActivated (QSystemTrayIcon :: ActivationReason)))
Насколько я могу судить, согласно Qt Documentation,
Сигнал activated () используется для отслеживания событий мыши, таких как щелчки и двойные щелчки, для значка на панели задач. Сначала я подумал, что это только сигналы и слоты, но потом по какой-то причине активированный () просто не подходит. И если я пытаюсь подключить activ () к слоту из другого класса, все происходит из-за ошибок указателя.
Вот рабочие части внутри 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
имеет слот, но это не QObject
(он не является производным от QObject или другого класса, производного от QObject), а также вам нужен Q_OBJECT
макрос в вашем объявлении класса, а затем сигналы и слоты будут работать.
Других решений пока нет …