繁体   English   中英

Qt,类间通信

[英]Qt, communication between classes

我有两个类MainWindowWorker 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM