Pregunta

tiene una clase como esta

class GUI : public QWidget, public QThread

Cuando hago lo anterior recibo errores acerca de las señales de conexión. The error says Reference to "connect" is ambiguous. ¿Hay una manera de heredar de ambos?

Gracias

¿Fue útil?

Solución

No se puede. Tanto QWidget y QThread hereda (no virtualmente) a partir QObject. Por consiguiente no tiene derivación virtual, por lo tanto, dos copias de QObject, lo que confunde el compilador. QObject fue diseñado específicamente de esta manera. Ver:

Hay algunos que supuestamente fue alrededor de este (no se puede encontrar el enlace en este momento, pero es que hay en Google, que tenía el mismo problema hace dos semanas), pero no es seguro en el mejor.

Editar: la mejor manera sería probablemente para tener otro objeto hereda de QThread y mantener ese objeto como un miembro de su clase GUI. Ese es el tipo de solución mayoría de la gente en esta materia.

Otros consejos

QWidgets y objetos relacionados de la GUI con no estar en diferentes hilos que el hilo principal de la aplicación. Usted no debe heredar dos. No se puede también llamar a la función moveToThread() de un widget.

No se puede heredar de múltiples QObjects.

Se puede heredar de uno y hacer que la otra variable miembro y trabajar desde allí.

class GUI : public QWidget 
{
  QThread myThread;
};

Usted ha asignado el nombre de clase GUI - es ésta la principal interfaz gráfica de usuario de su programa? Ver los ejemplos en los ejemplos Qt carpeta - tienen programas de ejemplo en tanto GUI y Hilos .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top