Uruchomienie QWidget::update z innego watku

0

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 ?

1

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);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1