[英]Qt, communication between classes
我有两个类MainWindow
和Worker
。 MainWindow
主要负责 GUI,worker 负责连接服务器。 MainWindow
有一个Worker
的实例。 如果Worker
从服务器收到一条消息,它应该更改 GUI,但我找不到与它们通信的方法。 我想过把MainWindow做成singleton,然后用槽和信号。 但也许有更简单的方法,比如一些 function 来获取当前视图的 object?
您在问题中提到了信号/插槽,但您将它们与 singleton 结合在一起,这根本不需要。 你说 MainWindow 有一个 Worker 的实例,所以只需连接到来自 Worker 的信号。 既然你没有提供任何代码,我会弥补一些东西。
void Worker::doSomething()
{
...
// When we get a message from the server emit a signal
emit messageReceived();
}
...
MyWindow::MyWindow()
{
auto worker = new Worker();
// Connect to the Worker's signal
connect(worker, &Worker::messageReceived, this, &MyWindow::handleMessage);
worker->start();
}
void MyWindow::handleMessage()
{
// The MainWindow can now do something in response to the server message
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.