Próbuję uruchomić metodę na wątku GUI za pomocą QMetaObject :: invokeMethod, która zwraca wartość true. Ale jeśli używam Qt :: QueuedConnection, moja metoda nigdy nie zostanie wywołana (nawet jeśli invokeMethod zwróci true).QMetaObject :: invokeMethod zwraca true, ale metoda nigdy nie jest wywoływana
To właśnie używam:
QMetaObject::invokeMethod(this, "draw_widgets", Qt::QueuedConnection)
ja nie otrzymuję żadnych komunikatów o błędach lub cokolwiek ... Jeśli używam Qt :: AutoConnection lub Qt :: DirectConnection który to sposób robi się nazywa , ale z tego samego wątku oczywiście. Nie z wątku GUI, który jest tym, czego potrzebuję.
draw_widgets to publiczne gniazdo typu void draw_widgets() , a moja klasa dziedziczy QObject i używa również makra Q_OBJECT.
Byłbym wdzięczny za pomoc w tej sprawie lub w jaki sposób sprawdzić, dlaczego metoda nie jest wywoływana.
Dzięki.
Mam podobną sytuację : Mam klasę, która dziedziczy z QObject i używa 'Q_OBJECT'. Instancja tej klasy jest tworzona w pętli głównej. Następnie, podczas wykonywania metody tej samej klasy w pętli głównej, nazywam 'QMetaObject :: invokeMethod (this," hideListsSlot ", Qt :: QueuedConnection);', gdzie 'void hideListsSlot()' jest publicznym slotem klasa. Slot nigdy nie jest wywoływany. – Giorgio