Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

584
Vistas
Qt / Qml: llamando a la función de JavaScript cada vez que ocurre un cambio de estado

He definido mi propio componente llamado "StatusLed.qml"

Archivo EstadoLed.qml

 Rectangle { id: root width: 20 height: 20 color: "#008b30" radius: 10 border.color: "#00000000" function changeColor() { root.color = "yellow" root.radius = 0 } MouseArea { id: clickArea anchors.fill: parent } states: [ State { name: "GO" PropertyChanges { target: root; color: "green" } }, State { name: "NOGO" PropertyChanges { target: root; color: "red" } }, State { name: "SELECTABLE" PropertyChanges { target: root; color: "green" } PropertyChanges { target: clickArea; onClicked: changeColor() } } ] }

Utilicé este componente en mi ventana/archivo de interfaz de usuario principal

Archivo principal.qml

 import QtQuick import QtQuick.Controls 6.2 import "./content" Window { id: root width: 1500 height: 900 function controlLeds() { if(standby_led1.state == "GO") { standby_led2.state = "SELECTABLE" standby_led3.state = "SELECTABLE" } else { standby_led2.state = "NOGO" standby_led3.state = "NOGO" } } StatusLed { id: standby_led1 state: "NOGO" onStatesChanged: controlLeds() } StatusLed { id: standby_led2 state: "NOGO" onStatesChanged: controlLeds() } StatusLed { id: standby_led3 state: "NOGO" onStatesChanged: controlLeds() } }

Hasta aquí todo bien. Lo que estoy tratando de hacer es:

Quiero ejecutar la función JavaScript controlLeds() cada vez que uno de los 3 LED haya cambiado de estado. Esta función verifica el estado actual del LED1 y cambiaría el estado de los otros 2 LED (LED2 y LED3) dependiendo de ello. Supuse erróneamente que se activaría una señal correspondiente para poder llamar a la función a través de la ranura onStatesChanged(). Ya que esto no está funcionando ahora, me gustaría saber cómo puedo solucionar esto. ¿Cómo activo la función controlLeds()?

Muchas Gracias y saludos

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Estás confundiendo las dos propiedades state y states . La propiedad state es el nombre del estado actual, mientras que la propiedad states es la colección de objetos State tal como se define en StatusLED.qml . Ha vinculado la función controlLeds a este último, que no cambia ya que no se agregan/eliminan estados (tenga en cuenta que la activación de un State no significa que los states de la colección cambien)

Lo que buscas es vincularte a onStateChanged .

Sin embargo, veo venir un bucle vinculante, por lo que propongo la siguiente solución:

 StatusLed { id: standby_led1 state: "NOGO" #I assume this is altered from logic not in the question } StatusLed { id: standby_led2 state: standby_led1.state == "GO" ? "SELECTABLE" : "NOGO" } StatusLed { id: standby_led3 state: standby_led1.state == "GO" ? "SELECTABLE" : "NOGO" }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda