Estoy tratando de ejecutar un método en el subproceso de GUI utilizando QMetaObject :: invokeMethod, que devuelve verdadero. Pero, si uso Qt :: QueuedConnection mi método nunca se llama (incluso si invokeMethod devuelve verdadero).QMetaObject :: invokeMethod devuelve verdadero, pero el método nunca se llama
Esto es lo que estoy usando:
QMetaObject::invokeMethod(this, "draw_widgets", Qt::QueuedConnection)
no recibo ningún mensaje de error ni nada ... Si uso Qt :: Auto Unión o Qt :: DirectConnection el método se consiga llamar , pero desde el mismo hilo, por supuesto. No desde el hilo de la interfaz gráfica de usuario, que es lo que necesito.
draw_widgets es una ranura pública de tipo void draw_widgets() y mi clase hereda QObject y también utiliza la macro Q_OBJECT.
Agradecería cualquier ayuda sobre esto, o sobre cómo comprobar por qué no se está llamando al método.
Gracias.
que tienen una situación similar : Tengo una clase que hereda de QObject y utiliza 'Q_OBJECT'. La instancia de esta clase se crea en el ciclo principal. Luego, al ejecutar un método de la misma clase en el ciclo principal, llamo a 'QMetaObject :: invokeMethod (this," hideListsSlot ", Qt :: QueuedConnection);', donde 'void hideListsSlot()' es un espacio público del clase. La ranura nunca se invoca. – Giorgio