Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

585
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda