2010-12-22 19 views
5

En el código de aplicación Qt Class A tiene un método de miembro como method1(). Quiero llamar a este método en otra función miembro method2() y ejecutar mehtod1() en un hilo diferente. Pero lo que encontré de la documentación de qt es el siguiente.Ejecutando una función en hilo diferente en QT

  1. Heredar un nuevo class MyThread (supongamos) de QThread.
  2. Reemplace el método de función run() con el código requerido.
  3. Cree un objeto de MyThread en Class A y luego llame a la función de ejecución donde desee.

Pero lo anterior parece un poco complejo. ¿Hay algún mecanismo en Qt para poder crear un nuevo QThread (sin heredar) instantáneamente en mi method1() y ejecutar el method2() con este hilo y luego regresar a method1() después de que la ejecución finalice?

Háganme saber si no tengo claro mi problema.

Respuesta

3

Puede usar ranuras y señales de QObject o soporte de eventos, combinado con hilos.

Básicamente, las ranuras QObject llamadas a través del mecanismo de señal/ranura se ejecutan en la secuencia que creó el QObject. También puede mover la propiedad del objeto de un hilo a otro usando QObject :: moveToThread.

También puede utilizar QCoreApplication :: posterior al evento para publicar eventos para su ejecución en el hilo del objeto fue creado en.

Ver más acerca de las discusiones y QObjects en la documentación de Qt ("hilos" y QObjects tema en el índice).

Yendo a su problema, puede usar dos objetos separados en diferentes subprocesos para "extender" la ejecución.

10

Sí, hay una manera que usted desea.

Este artículo le ayudará a entender por qué no es la forma correcta de heredar de QThread: http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/

Este artículo le ayudará a saber cómo utilizar QThread de una manera realmente simple: http://blog.qt.digia.com/blog/2006/12/04/threading-without-the-headache/

+2

modo espera, Básicamente, en el primer enlace que proporcionaste, el autor me dice que NO haga una subclase de QThread, y en el segundo enlace otro autor me dice qué tan fáciles son los hilos de Qt si yo subclase QThread. Estoy un poco confundido ahora, pero gracias por los enlaces de todos modos;) +1 – Hafnernuss

+0

No exactamente. El primer artículo explica por qué QThread no se debe heredar en este caso y el segundo explica cómo usar la clase QThread sin crear subclases –

+0

lo siento, lo noté. Supongo que era demasiado temprano para mí. gracias por la limpieza;) – Hafnernuss

Cuestiones relacionadas