【发布时间】:2021-05-19 14:49:31
【问题描述】:
我正在尝试使用 C++ 中的基本信号/插槽。
这是我的 Network-Manager,它将触发事件:
class NetworkManager : public QObject {
Q_OBJECT
public:
explicit NetworkManager(QApplication* application);
void OnFinished(QNetworkReply *reply);
...
signals:
void OnReceived();
};
而在Display-Manager中,这个类会接收到事件:
class DisplayManager : public QObject{
Q_OBJECT
public:
explicit DisplayManager(QApplication *app);
void ChangeWallPaper();
public slots:
void ReceiveData();
};
我正在尝试从另一个班级进行连接:
Manager::Manager(QApplication *application, NetworkManager networkManager, DisplayManager displayManager)
: networkManager(application),displayManager(application) {
...
connect(&networkManager, &NetworkManager::OnReceived, &displayManager, &DisplayManager::ReceiveData);
}
在这些类的实现中:
void DisplayManager::ReceiveData() {
std::cout << "being called" << std::endl;// to check if this is being called
}
void NetworkManager::OnFinished(QNetworkReply *reply) {
OnReceived(); // to trigger
}
// OnReceived() not implemented as it just a signal
我在这里缺少什么,为什么 ReceiveData 没有被调用?
【问题讨论】:
标签: c++ qt connect signals-slots