Qt Минимизированное событие мыши на панели задач

Я пытался практически всеми возможными способами подключить активированный () значок на панели задач в соответствующий слот. Однако я не понимаю, почему 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.

Если бы кто-то мог помочь мне избавиться от волос, это было бы здорово!

Спасибо вам всем.

1

Решение

Твой класс CCTSystemTray имеет слот, но это не QObject (он не является производным от QObject или другого класса, производного от QObject), а также вам нужен Q_OBJECT макрос в вашем объявлении класса, а затем сигналы и слоты будут работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]