C++ QMetaObject::invokeMethod和Connect()之间的差异

C++ QMetaObject::invokeMethod和Connect()之间的差异,c++,qt,C++,Qt,我的应用程序在主窗口线程中包含许多标签,这些标签通过udp线程中的connect(SIGNAL(),SLOT())更新 (从udp到主窗口的单向连接“udp recive发送数据到主窗口进行更新”),起初应用程序正在崩溃,因为从udp线程到主窗口(主线程)发送的数据太多,我在udp线程中添加了计时器,每250ms发送一次更新,并正常工作,但当用户在应用程序上进行一些交互(如触摸)时,速度很慢,冻结时间很短 所以我找到了另一种从线程QMetaObject::invokeMethod更新GUI的方法

我的应用程序在主窗口线程中包含许多标签,这些标签通过udp线程中的connect(SIGNAL(),SLOT())更新 (从udp到主窗口的单向连接“udp recive发送数据到主窗口进行更新”),起初应用程序正在崩溃,因为从udp线程到主窗口(主线程)发送的数据太多,我在udp线程中添加了计时器,每250ms发送一次更新,并正常工作,但当用户在应用程序上进行一些交互(如触摸)时,速度很慢,冻结时间很短

所以我找到了另一种从线程QMetaObject::invokeMethod更新GUI的方法

QMetaObject::invokeMethod(标签、插槽(setText(const-QString&))、Q_-ARG(QString,“Hello”)

两种方式有什么区别? 调用方法是否不阻止主线程?并且完全在udp线程中完成? 我可以使用invoke方法以udp线程接收数据的相同速度更新ui,而不阻塞mainwindow(主线程)?如果不是的话,有没有其他方法可以做到这一点

谢谢你的帮助