Nie cała aplikacja jest w Qt , jak taki watek std::thread powinien wywołać metodę update z Qt ?
QMetaObject::invokeMethod(target_ptr_to_update, "update", Qt::QueuedConnection);
są jeszcze jakieś alternatywne metody łączenia Qt z nieQt ?
Nie cała aplikacja jest w Qt , jak taki watek std::thread powinien wywołać metodę update z Qt ?
QMetaObject::invokeMethod(target_ptr_to_update, "update", Qt::QueuedConnection);
są jeszcze jakieś alternatywne metody łączenia Qt z nieQt ?
To jest idiomatyczna metoda do osiągnięcia tego co chcesz. Jej powinieneś użyć.
Możesz się też bawić z QCoreApplication::postEvent()
, ale obiekty mogą ignorować eventy.
Osobiście używam takiego wytrychu (rzadko jest niezbędny, ale czasem znakomicie upraszcza implementację):
public slots:
void executeInObjectsThread(std::function<void()> func);
void kqObject::executeInObjectsThread(std::function<void()> func)
{
QMetaObject::invokeMethod(this, func, Qt::QueuedConnection);
}