conversaciones tipo automático en manejador de señal QML

votos
2

En una aplicación QtQuick 1,0 (Qt 4,8) que tenía el siguiente código de controlador de señal.

Item {
  property bool landscape: false
  [...]
  Connections {
  [...]
    onPpar: {
      landscape = value;
      [...]
    }
  }
}

... donde el valor proviene de una señal planteada por el backend C ++ y contiene de hecho una cadena que puede ser 'verdadero' o 'falso'. Esto funcionó bien en mi solicitud Qt4.8 pero el tipo de conversación a la propiedad bool dejó de funcionar cuando portado a la aplicación Qt5.1 y QtQuick 2.0. Ahora tengo que escribir algo como

onPpar: {
  landscape = (value == 'true');
}

... para ponerlo en marcha.

Pensé que el tipo de conversación es parte de lo que lo hace de forma automática JavaScript? Y como dije, hasta 4,8 funcionó perfectamente sin la explícita truco conversación.

¿Que me estoy perdiendo aqui?

Publicado el 05/03/2014 a las 01:47
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Probablemente es un error (o función) en el módulo declarativo en 4.8. QT5 tiene un comportamiento adecuado, ya que todas las cadenas "verdadero", "falso" y "Trololo" evaluarán a Boolean cierto. Cualquier cadena no vacía se evaluará como true. Así que la solución es adecuada para cambiar el parámetro de la señal de la cadena a bool. Si no puede hacerlo por alguna razón, entonces usted necesita para escribir

landscape = (value == 'true');

como lo hace ahora.

Respondida el 06/03/2014 a las 12:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more