Qt add function call to event loop from another thread
I stumbled upon a problem that I cannot solve in an elegant way right now. Situation: I have a callback function called from outside my application. The callback function needs to update some gui object. Since I cannot call (for example) repaint()
from another thread, I need to find a way to add a function call to the main event loop so that the task will run at some time.
One possible way would be to use this:
QMetaObject::invokeMethod(object, "functionName", Qt::QueuedConnection, Q_ARG(float, value));
However, this just gives me the answer that no such Method "Object::functionName"
. (which is obviously a lie!)
I also read about connecting a signal to a slot that will be called from the event loop by setting the connection type to Qt::QueuedConnection
. However, the usage QOjbect.:connect()
won't work as I don't know which object should receive the signal. Nice will be something like
QObject::emit(object, SIGNAL(function(flaot)), arg);
source to share