import QtQuick import QtQuick.Controls 2.5 import QtQuick.Layouts 1.3 import QtQml 2.3 import QtQuick.Window 2.2 import QtMultimedia import "backend.js" as Backend /* 车辆各信息数据展示UI界面 */ Item { property int currentIndex: 0 property int radarTxtSize: 14 property color popupBgColorErr: "#b44" property color popupBgColorWarn: "#f7bd3e" property color popupBgColorOK: "#29b6fb" property color popupTextColor: "#ffffff" property int radarRedRange: 1500 property int radarGreenRange: 3000 property int radarGreenOutRange: 5000 property var textList: [{ "text": " ", "visible": true }, { "text": "动臂提升先导压力传感器故障", "visible": appModel.liftPilotPressureSensor_F }, { "text": "动臂下降先导压力传感器故障", "visible": appModel.loweringPilotPressureSensor_F }, { "text": "斗杆提升先导压力传感器故障", "visible": appModel.leverLiftPilotPressureSensor_F }, { "text": "斗杆下降先导压力传感器故障", "visible": appModel.rodLoweringPilotPressurePensor_F }, { "text": "车体左回转先导压力传感器故障", "visible": appModel.leftTurnPilotPressureSensor_F }, { "text": "车体右回转先导压力传感器故障", "visible": appModel.rightTurnPilotPressureSensor_F }, { "text": "支腿伸出先导压力传感器故障", "visible": appModel.legExtensionPilotPressureSensor_F }, { "text": "支腿缩回先导压力传感器故障", "visible": appModel.legRetractPilotPressureSensor_F }, { "text": "抓斗开启先导压力传感器故障", "visible": appModel.grabOpenPilotPressureSensor_F }, { "text": "抓斗闭合先导压力传感器故障", "visible": appModel.grabClosurePilotPressureSensor_F }, { "text": "主泵1压力传感器故障", "visible": appModel.mainPump1PressureSensor_F }, { "text": "主泵2压力传感器故障", "visible": appModel.mainPump2PressureSensor_F }, { "text": "动臂无杆腔压力传感器故障", "visible": appModel.chamberPressureSensor_F }, { "text": "斗杆无杆腔压力传感器故障", "visible": appModel.bucketRodPressureSensor_F }, { "text": "驻车压力传感器故障", "visible": appModel.parkingPressureSensor_F }, { "text": "蓄能器压力传感器故障", "visible": appModel.accumulatorPressureSensor_F }, { "text": "油门踏板故障", "visible": appModel.gasPedal_F }, { "text": "油门旋钮故障", "visible": appModel.throttleKnob_F }, { "text": "支腿手柄故障", "visible": appModel.legHandle_F }, { "text": "抓具旋钮故障", "visible": appModel.gripKnob_F }, { "text": "液压油温传感器故障", "visible": appModel.hydraulicOilTemperatureSensor_F }, { "text": "燃油油位传感器故障", "visible": appModel.fuelLevelSensor_F }, { "text": "动臂倾角传感器故障", "visible": appModel.boomAngleSensor_F //"visible": true }, { "text": "斗杆倾角传感器通讯故障", "visible": appModel.bucketLeverTiltSensor_F }, { "text": "扩展模块通讯故障", "visible": appModel.expansionModule_F }, { "text": "工作距离超限", "visible": appModel.workingDistanceOverrun_F }, { "text": "燃油油位低", "visible": appModel.lowOilLevel_F }, { "text": "电池电压低", "visible": appModel.batteryLowVoltage_F }, { "text": "电池电压高", "visible": appModel.batteryHighVoltage_F }, { "text": "蓄能器压力异常", "visible": appModel.accumulatorPressure_F }, { "text": "液压油温高", "visible": appModel.highHydraulicOilTemperature_F }, { "text": "机油压力低", "visible": appModel.lowOilPressure_F }, { "text": "冷却液液位低", "visible": appModel.coolantLevelLow_F }, { "text": "冷却液温度高", "visible": appModel.coolantTemperatureHigh_F }, { "text": "系统超载", "visible": appModel.systemOverload_F }, { "text": "安全旁通按下", "visible": appModel.safebypassPressDown_F }, { "text": "发动机SPN故障", "visible": appModel.engineSPN_F }, { "text": "发动机预热中", "visible": appModel.engineWarmUp_F }, { "text": "发动机预热超时", "visible": appModel.engineWarmUpTimeout_F }, { "text": "紧急停止按下", "visible": appModel.emergencyStopPress_F }, { "text": "安全开关阀异常", "visible": appModel.safetySwitch !==0 }, { "text": "大臂提升先导比例阀异常", "visible": appModel.armLiftPilot !==0 }, { "text": "大臂下降先导比例阀异常", "visible": appModel.armLoweringPilot !==0 }, { "text": "斗杆提升先导比例阀异常", "visible": appModel.leverLiftingLilot !==0 }, { "text": "斗杆下降先导比例阀异常", "visible": appModel.rodLoweringPilot !==0 }, { "text": "左回转先导比例阀异常", "visible": appModel.leftRotaryPilot !==0 }, { "text": "右回转先导比例阀异常", "visible": appModel.rightRotaryPilot !==0 }, { "text": "抓斗开启先导比例阀异常", "visible": appModel.grabOpenPilot !==0 }, { "text": "抓斗闭合先导比例阀异常", "visible": appModel.grabClosePilot !==0 } //注释:影响其他报警信息显示 //, { //"text": "怠速保护报警", //"visible": appModel.idleProtection //} ] property string back_content: "ask content"; property string move_content: ""; property int uid: 0 property string strArea:"" property string strNo:"" width: 1920 height: 1080 visible: true FontLoader { id: alibaba source: "qrc:/components/font/Alibaba-PuHuiTi-Bold.ttf" } FontLoader { id: fontawesome source: "qrc:/components/font/fontawesome-webfont.ttf" } FontLoader { id: digtalFont source: "qrc:/components/font/fontawesome-webfont.ttf" } signal loginSuccess(var userName, var password) function loginUser(uname, pword) { var ret = Backend.validateUserCredentials(uname, pword) var message = "" if (ret) { message = "用户名或密码输入错误" subPopup.popMessage = message subPopup.open() return } // loginSuccess(uname, pword) appModel.userLogin(uname, pword); page_car.visible = true page_car.stack = stack stack.push(page_car) } function moveBegin(area,no) { appModel.moveBegin(area,no) back_content="\t 自动驾驶即将启动 \n\t 是否还需要保持远程监控"; trackDialog.visible=true; /* if(appModel.autoClose()) { page_detail.disconnect() appModel.leaveCar() stack.pop() stack.pop() } */ } function carManage(){ stack.pop() } function workManage(){ page_work.visible=true; page_work.stack=stack; stack.push(page_work) } objectName: "tst" function popDialog(str,area,no, vid) { strArea=String.fromCharCode(0x41+area)+"" no= no+1 strNo=(no<3?"新"+strArea+(no+1).toString()+"罐":strArea+(no-2).toString()+"罐") back_content=str+"已经到达"+strNo+"区域 \n\t 请求远程操控"; uid=vid; backDialog.visible=true; } function moveErrorDialog(desc) { strDesc="不能执行自动驾驶" if(desc===1) { back_content=strDesc+"(未能获取编码器数据)"; } else { back_content=strDesc+"(未知错误)"; } moveErrorDlg.visible=true; } function carSelect(id) { appModel.connectCar(id) } function track() { // appModel.track() } function unTrack() { console.log('1111111'); //appModel.leaveCar() appModel.ready = false stack.pop() page_detail.update() stack.pop() } Popup { id: subPopup property alias popMessage: message.text background: Rectangle { id: subPopupBg implicitWidth: 1920 implicitHeight: 60 color: popupBgColorErr } y: (parent.height - 60) modal: true focus: true closePolicy: Popup.CloseOnPressOutside Text { id: message anchors.centerIn: parent font.pointSize: 12 color: popupTextColor font.family: alibaba.name } onOpened: subPopupClose.start() } Timer { id: subPopupClose interval: 3000 onTriggered: subPopup.close() } Rectangle { anchors.fill: parent Image { fillMode: Image.PreserveAspectFit source: 'qrc:/images/bg.png' } //增加声音--用于测试 Rectangle { id: test222 color: "red" width: 80 height: 750 z: 101 anchors.top: powerLegImg4.top anchors.topMargin: 60 anchors.left: powerLegImg4.left anchors.leftMargin: 10 visible:false /* SoundEffect { id: audio source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Component.onCompleted:{ audio.play() } Connections { target: appModel onSigSoundIsPlay: { //console.log(par1) if (Number(par1) === 0) { audio.stop() } else { audio.play() } } } //发动机声音 SoundEffect { //Audio{ id: engineSpeedPlaySound //source: "qrc:/sound/enginSound.wav" volume: 1.0 loops: SoundEffect.Infinite //loops:1 } Connections { target: appModel onEngineSpeedPlay: { //console.log(par2) if (Number(par2) === 0) { engineSpeedPlaySound.stop() } else { if ((Number)(engineSpeedPlaySound.playing) === 0) { engineSpeedPlaySound.play() } } } } */ //R挡声音 SoundEffect { id: gearRPlaySound source: "qrc:/sound/gearRPlaySound.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onGearRPlay: { //console.log(par5) if (Number(par5) === 0) { gearRPlaySound.stop() } else { if ((Number)(gearRPlaySound.playing) === 0) { gearRPlaySound.play() } } } } /* //蜂鸣器声音 SoundEffect { id: buzzerPlayIt //source: "qrc:/sound/blowSoundPlayIt.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onBuzzerPlayIt: { //console.log(par6) if (Number(par6) === 0) { buzzerPlayIt.stop() } else { if ((Number)(buzzerPlayIt.playing) === 0) { buzzerPlayIt.play() } } } } */ //左转声音 SoundEffect { id: lightLPlaySound source: "qrc:/sound/lightLPlaySound.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onLightLPlay: { //console.log(par3) if (Number(par3) === 0) { lightLPlaySound.stop() } else { if ((Number)(lightLPlaySound.playing) === 0) { lightLPlaySound.play() } } } } //右转声音 SoundEffect { id: lightRPlaySound source: "qrc:/sound/lightRPlaySound.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onLightRPlay: { //console.log(par4) if (Number(par4) === 0) { lightRPlaySound.stop() } else { if ((Number)(lightRPlaySound.playing) === 0) { lightRPlaySound.play() } } } } //超声波雷达1的声音 SoundEffect { id: radarOneSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar1Play: {//console.log("------------"+Number(Radar1Value)+appModel.ready+"-----------------") if (appModel.ready == false||Number(Radar1Value) > 1000) { radarOneSound.stop() } else {//console.log("+++++++++++++++"+(Number)(radarOneSound.playing)+"++++++++++++++++") if ((Number)(radarOneSound.playing) === 0) { radarOneSound.play() } } } } //超声波雷达2的声音 SoundEffect { id: radarTwoSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar2Play: { if (appModel.ready == false||Number(Radar2Value) > 1000) { radarTwoSound.stop() } else { if ((Number)(radarTwoSound.playing) === 0) { radarTwoSound.play() } } } } //超声波雷达3的声音 SoundEffect { id: radarThreeSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar3Play: { if (appModel.ready == false||Number(Radar3Value) > 1000) { radarThreeSound.stop() } else { if ((Number)(radarThreeSound.playing) === 0) { radarThreeSound.play() } } } } //超声波雷达4的声音 SoundEffect { id: radarFourSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar4Play: { if (appModel.ready == false||Number(Radar4Value) > 1000) { radarFourSound.stop() } else { if ((Number)(radarFourSound.playing) === 0) { radarFourSound.play() } } } } //超声波雷达5的声音 SoundEffect { id: radarFiveSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar5Play: { if (appModel.ready == false||Number(Radar5Value) > 1000) { radarFiveSound.stop() } else { if ((Number)(radarFiveSound.playing) === 0) { radarFiveSound.play() } } } } //超声波雷达6的声音 SoundEffect { id: radarSixSound source:"qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar6Play: { if (appModel.ready == false||Number(Radar6Value) > 1000) { radarSixSound.stop() } else { if ((Number)(radarSixSound.playing) === 0) { radarSixSound.play() } } } } //超声波雷达7的声音 SoundEffect { id: radarSevenSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar7Play: { if (appModel.ready == false||Number(Radar7Value) > 1000) { radarSevenSound.stop() } else { if ((Number)(radarSevenSound.playing) === 0) { radarSevenSound.play() } } } } //超声波雷达8的声音 SoundEffect { id: radarEightSound source: "qrc:/sound/beep-1.wav" volume: 1.0 loops: SoundEffect.Infinite } Connections { target: appModel onSetRadar8Play: { if (appModel.ready == false||Number(Radar8Value) > 1000) { radarEightSound.stop() } else { if ((Number)(radarEightSound.playing) === 0) { radarEightSound.play() } } } } } //此处加入的 Row { Rectangle { id: statusLeftLogin anchors.fill: parent visible: false color: 'transparent' //登录界面最左侧上边框 Image { id: sideUp_left x:-60 z: 99 width:150 height:720 visible: true source: 'qrc:/images/sideUp_left.png' } //登录界面最右侧上边框 Image { id: sideUp_right x: 300 z: 99 width:150 height:720 visible: true source: 'qrc:/images/sideUp_right1.png' } //登录界面最左侧下边框 Image { id: sideDown_left z: 99 height: 400 anchors.left: statusLeftLogin.left anchors.leftMargin: 0 anchors.top: sideUp_left.bottom anchors.topMargin: -7 fillMode: Image.Stretch visible: true source: 'qrc:/images/sideDown_left.png' } //登录界面最右侧下边框 Image { id: sideDown_right z: 99 height: 400 anchors.right: statusLeftLogin.right anchors.rightMargin: -50 - 400 anchors.top: sideUp_right.bottom anchors.topMargin: 0 - 10 fillMode: Image.Stretch visible: true source: 'qrc:/images/sideDown_right.png' } Image { id:powerLegImg1 visible: appModel.leftFrontLegChosed === true anchors.top:sideDown_right.top anchors.topMargin: 270 anchors.left:sideDown_right.right anchors.leftMargin:30 source: 'qrc:/images/powerLeg.png' z: 99 } Text { id:powerLegText1 z:100 visible: appModel.leftFrontLegChosed === true anchors.top:powerLegImg1.top anchors.topMargin: 60 anchors.left:powerLegImg1.left anchors.leftMargin:10 text:"支腿1" color:"#00FF66" font{ family:"Cambria" pointSize:10 } } Image { id:powerLegImg2 visible: appModel.rightFrontLegChosed === true anchors.top:sideDown_right.top anchors.topMargin: 270 anchors.left:sideDown_right.right anchors.leftMargin:130 source: 'qrc:/images/powerLeg.png' z: 99 } Text { id:powerLegText2 z:100 visible: appModel.rightFrontLegChosed === true anchors.top:powerLegImg2.top anchors.topMargin: 60 anchors.left:powerLegImg2.left anchors.leftMargin:10 text:"支腿2" color:"#00FF66" font{ family:"Cambria" pointSize:10 } } Image { id:powerLegImg3 visible: appModel.leftRearLegChosed === true anchors.top:sideDown_right.top anchors.topMargin: 270 anchors.left:sideDown_right.right anchors.leftMargin:830 source: 'qrc:/images/powerLeg.png' z: 99 } Text { id:powerLegText3 z:100 visible: appModel.leftRearLegChosed === true anchors.top:powerLegImg3.top anchors.topMargin: 60 anchors.left:powerLegImg3.left anchors.leftMargin:10 text:"支腿3" color:"#00FF66" font{ family:"Cambria" pointSize:10 } } Image { id:powerLegImg4 visible: appModel.rightRearLegChosed === true anchors.top:sideDown_right.top anchors.topMargin: 270 anchors.left:sideDown_right.right anchors.leftMargin:930 source: 'qrc:/images/powerLeg.png' z: 99 } Text { id:powerLegText4 z:100 visible: appModel.rightRearLegChosed === true anchors.top:powerLegImg4.top anchors.topMargin: 60 anchors.left:powerLegImg4.left anchors.leftMargin:10 text:"支腿4" color:"#00FF66" font{ family:"Cambria" pointSize:10 } } //左侧车辆信息 Column { id: carDataColumn width: 80 height: 750 anchors.top: statusLeftLogin.top anchors.topMargin: 0 //anchors.horizontalCenter: statusData.horizontalCenter Text { id: posData text: "车辆姿态:" color: mainTextColor anchors.top: carDataColumn.top anchors.topMargin: 20 anchors.left: carDataColumn.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: 20 anchors.horizontalCenter: statusData.horizontalCenter } Image { //抓钢车侧视图片 id: posSide anchors.top: posData.bottom anchors.topMargin: -10 anchors.left: posData.left anchors.leftMargin: 0 width: 360 / 2 height: 240 / 2 fillMode: Image.Stretch source: 'qrc:/images/side_view.png' anchors.horizontalCenter: statusData.horizontalCenter Component.onCompleted: { posSideTimer.start() } } RotationAnimation { id: posSideRota target: posSide from: 0 to: 0 duration: 100 } Timer { id: posSideTimer1 interval: 2000 repeat: true onTriggered: { posSideAnim.from = 0 posSideAnim.to = appModel.imux posSideAnim.start() } } Row { id: postextRow anchors.top: posSide.bottom anchors.topMargin: 0 anchors.left: posSide.left anchors.leftMargin: 0 Text { id: yAngleLogin text: "横向倾角度:" color: mainTextColor anchors.left: postextRow.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: 14 } spacing: 50 Text { id: yAngleValueLogin text: appModel.imux.toFixed(0) color: appModel.imux >= 30 ? 'red' : '#FFFFFF' anchors.left: yAngleLogin.right anchors.leftMargin: 20 font.family: digtalFont.name font.pointSize: 18 Component.onCompleted: { console.log("appModel.imux", appModel.imux) } } } Image { //抓钢车后视图片 id: posRear anchors.top: posData.bottom anchors.topMargin: -10 anchors.left: posData.left anchors.leftMargin: 170 width: 360 / 2 height: 240 / 2 fillMode: Image.Stretch source: 'qrc:/images/rear_view.png' anchors.horizontalCenter: statusData.horizontalCenter Component.onCompleted: { posRearTimer.start() } } RotationAnimation { id: posRearAnim target: posRear from: 0 to: 0 duration: 100 } Timer { id: posRearTimer1 interval: 2000 repeat: true onTriggered: { posRearAnim.from = 0 posRearAnim.to = appModel.imuy posRearAnim.start() } } Row { id: xAngleRow anchors.top: posRear.bottom anchors.topMargin: 0 anchors.left: posRear.left anchors.leftMargin: 0 Text { id: xAngle text: "纵向倾角度:" color: mainTextColor anchors.left: xAngleRow.left anchors.leftMargin: 40 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: xAngleValue text: appModel.imux.toFixed(0) color: appModel.imux >= 30 ? 'red' : '#FFFFFF' anchors.left: xAngle.right anchors.leftMargin: 20 Component.onCompleted: { console.log("appModel.imux", appModel.imux) } font.family: digtalFont.name font.pointSize: 18 } } Row { //燃油油位 id: fuelLevel anchors.top: xAngleRow.bottom anchors.topMargin: 40 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: fuelLevelImage anchors.left: fuelLevel.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/fuelLevel.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: fuelLevelText text: "燃油 油位:" color: mainTextColor anchors.left: fuelLevelImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: fuelLevelTextValue anchors.left: fuelLevelText.right anchors.leftMargin: 30 text: appModel.fuelLevel.toFixed(0) //color: appModel.fuelLevel <= 10 ? 'red' : '#FFFFFF' color:'#FFFFFF' Component.onCompleted: { console.log("appModel.fuelLevel", appModel.fuelLevel) } font.family: digtalFont.name font.pointSize: 18 } Text { id: fuelLevelText1 text: "%" color: mainTextColor anchors.left: fuelLevelText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //发动机水温 id: waterTemperature anchors.top: fuelLevel.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: waterTemperatureImage anchors.left: waterTemperature.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/waterTemperature.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: waterTemperatureText text: "发动机水温:" color: mainTextColor anchors.left: waterTemperatureImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: waterTemperatureTextValue anchors.left: waterTemperatureText.right anchors.leftMargin: 30 text: (appModel.engineTemperature / 100 - 100).toFixed( 0) //color: appModel.engineTemperature / 100 >= 100 ? 'red' : '#FFFFFF' color:'#FFFFFF' Component.onCompleted: { console.log("appModel.engineTemperature", appModel.engineTemperature) } font.family: digtalFont.name font.pointSize: 18 } Text { id: waterTemperatureText1 text: "℃" color: mainTextColor anchors.left: waterTemperatureText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //液压油油温 id: oilTemperature anchors.top: waterTemperature.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: oilTemperatureImage anchors.left: oilTemperature.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/oilTemperature.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: oilTemperatureText text: "液压油油温:" color: mainTextColor anchors.left: oilTemperatureImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: oilTemperatureTextValue anchors.left: oilTemperatureText.right anchors.leftMargin: 30 text: (appModel.hydraulicOilTemperature / 100).toFixed( 0) color: appModel.hydraulicOilTemperature / 100 >= 160 ? 'red' : '#FFFFFF' Component.onCompleted: { console.log("appModel.hydraulicOilTemperature", appModel.hydraulicOilTemperature) } font.family: digtalFont.name font.pointSize: 18 } Text { id: oilTemperatureText1 text: "℃" color: mainTextColor anchors.left: oilTemperatureText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //主泵1压力 id: pumpPressure1 anchors.top: oilTemperature.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: pumpPressure1Image anchors.left: pumpPressure1.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/pumpPressure.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: pumpPressure1Text text: "主泵 1 压力:" color: mainTextColor anchors.left: pumpPressure1Image.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: pumpPressure1TextValue anchors.left: pumpPressure1Text.right anchors.leftMargin: 30 text: (appModel.mainPump1Pressure / 100).toFixed(0) color: appModel.mainPump1Pressure / 100 >= 260 ? 'red' : '#FFFFFF' Component.onCompleted: { console.log("appModel.mainPump1Pressure", appModel.mainPump1Pressure) } font.family: digtalFont.name font.pointSize: 18 } Text { id: pumpPressure1Text1 text: "bar" color: mainTextColor anchors.left: pumpPressure1Text.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //主泵2压力 id: pumpPressure2 anchors.top: pumpPressure1.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: pumpPressure2Image anchors.left: pumpPressure2.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/pumpPressure.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: pumpPressure2Text text: "主泵 2 压力:" color: mainTextColor anchors.left: pumpPressure2Image.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: pumpPressure2TextValue anchors.left: pumpPressure2Text.right anchors.leftMargin: 30 text: (appModel.mainPump2Pressure / 100).toFixed(0) color: appModel.mainPump2Pressure / 100 >= 260 ? 'red' : '#FFFFFF' Component.onCompleted: { console.log("appModel.mainPump2Pressure", appModel.mainPump2Pressure) } font.family: digtalFont.name font.pointSize: 18 } Text { id: pumpPressure2Text1 text: "bar" color: mainTextColor anchors.left: pumpPressure2Text.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //手柄挡位----改为水箱水位 id: handleGear anchors.top: pumpPressure2.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: handleGearImage anchors.left: handleGear.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/handleGear.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: handleGearText text: "水箱 水位:" color: mainTextColor anchors.left: handleGearImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: handleGearTextValue anchors.left: handleGearText.right anchors.leftMargin: 30 text: appModel.handGear.toFixed(0) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.handGear", appModel.handGear) } font.family: digtalFont.name font.pointSize: 18 } Text { id: handleGearText1 text: "%" color: mainTextColor anchors.left: handleGearText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //实际挡位------发动机机油压力 id: gearPosition anchors.top: handleGear.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: gearPositionImage anchors.left: gearPosition.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/handleGear.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: gearPositionText text: "机油 压力:" color: mainTextColor anchors.left: gearPositionImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: gearPositionTextValue anchors.left: gearPositionText.right anchors.leftMargin: 30 text: appModel.actualGear.toFixed(0) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.actualGear", appModel.actualGear) } font.family: digtalFont.name font.pointSize: 18 } Text { id: gearPositionText1 text: "Kpa" color: mainTextColor anchors.left: gearPositionText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //抓具高度 id: gripperHeight anchors.top: gearPosition.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: gripperHeightImage anchors.left: gripperHeight.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/gripperHeight.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: gripperHeightText text: "抓具 高度:" color: mainTextColor anchors.left: gripperHeightImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: gripperHeightTextValue anchors.left: gripperHeightText.right anchors.leftMargin: 30 text: appModel.gripperHeight.toFixed(1) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.gripperHeight", appModel.gripperHeight) } font.family: digtalFont.name font.pointSize: 18 } Text { id: gripperHeightText1 text: "m" color: mainTextColor anchors.left: gripperHeightText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //幅度 id: amplitude anchors.top: gripperHeight.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: amplitudeImage anchors.left: amplitude.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/amplitude.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: amplitudeText text: "幅度 :" color: mainTextColor anchors.left: amplitudeImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: amplitudeTextValue anchors.left: amplitudeText.right anchors.leftMargin: 30 text: appModel.amplitude1.toFixed(1) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.amplitude", appModel.amplitude1) } font.family: digtalFont.name font.pointSize: 18 } Text { id: amplitudeText1 text: "m" color: mainTextColor anchors.left: amplitudeText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //动臂角度 id: boomAngle anchors.top: amplitude.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: boomAngleImage anchors.left: boomAngle.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/boomAngle.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: boomAngleText text: "动臂 角度:" color: mainTextColor anchors.left: boomAngleImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: boomAngleTextValue anchors.left: boomAngleText.right anchors.leftMargin: 30 text: (appModel.boomAngle / 100 - 100).toFixed(0) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.boomAngle", appModel.boomAngle / 100 - 100) } font.family: digtalFont.name font.pointSize: 18 } Text { id: boomAngleText1 text: "°" color: mainTextColor anchors.left: boomAngleText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //斗杆角度 id: stickAngle anchors.top: boomAngle.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: stickAngleImage anchors.left: stickAngle.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/stickAngle.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: stickAngleText text: "斗杆 角度:" color: mainTextColor anchors.left: stickAngleImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: stickAngleTextValue anchors.left: stickAngleText.right anchors.leftMargin: 30 text: (appModel.stickAngle / 100 - 180).toFixed(0) color: '#FFFFFF' Component.onCompleted: { console.log("appModel.stickAngle", appModel.stickAngle / 100 - 180) } font.family: digtalFont.name font.pointSize: 18 } Text { id: stickAngleText1 text: "°" color: mainTextColor anchors.left: stickAngleText.right anchors.leftMargin: 90 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //前轮对中 id: frontToggle anchors.top: stickAngle.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: frontToggleImage anchors.left: frontToggle.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/frontToggle.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: frontToggleText text: "前轮 对中:" color: mainTextColor anchors.left: frontToggleImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: frontToggleTextValue anchors.left: frontToggleText.right anchors.leftMargin: 30 text: "已对中" visible: appModel.frontToggle === true color: mainTextColor Component.onCompleted: { console.log("appModel.frontToggle", appModel.frontToggle) } font.family: alibaba.name font.pointSize: 14 } Text { id: frontToggleText1 text: "未对中" visible: appModel.frontToggle === false color: "red" anchors.left: frontToggleText.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //后轮对中 id: backToggle anchors.top: frontToggle.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: backToggleImage anchors.left: backToggle.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/backToggle.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: backToggleText text: "后轮 对中:" color: mainTextColor anchors.left: backToggleImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: backToggleTextValue anchors.left: backToggleText.right anchors.leftMargin: 30 text: "已对中" visible: appModel.backToggle === true color: mainTextColor Component.onCompleted: { console.log("appModel.backToggle", appModel.backToggle) //sss //console.log(appModel.boomAngleSensor_F) //console.log(appModel.grabClosurePilotPressureSensor_F) } font.family: alibaba.name font.pointSize: 14 } Text { id: backToggleText1 text: "未对中" visible: appModel.backToggle === false color: "red" anchors.left: backToggleText.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //启动联锁 id: interLockShow anchors.top: backToggle.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: interLockImage anchors.left: interLockShow.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/interlock.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: interLockText text: "启动 联锁:" color: mainTextColor anchors.left: interLockImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: interLockTextValue anchors.left: interLockText.right anchors.leftMargin: 30 text: "已启动" visible: appModel.interLock === 1 color: mainTextColor Component.onCompleted: { console.log("appModel.backToggle", appModel.backToggle) //sss //console.log(appModel.boomAngleSensor_F) //console.log(appModel.grabClosurePilotPressureSensor_F) } font.family: alibaba.name font.pointSize: 14 } Text { id: interLockText1 text: "未启动" visible: appModel.interLock === 0 color: "red" anchors.left: interLockText.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //安全开关阀 id: safetyValvesShow anchors.top: interLockShow.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: safetyValvesImage anchors.left: safetyValvesShow.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/safetyvalves.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: safetyValvesText text: "安全 阀门:" color: mainTextColor anchors.left: safetyValvesImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: safetyValvesTextValue anchors.left: safetyValvesText.right anchors.leftMargin: 30 text: "已开启" visible: appModel.safetyValves === 1 color: mainTextColor Component.onCompleted: { console.log("appModel.backToggle", appModel.backToggle) //sss //console.log(appModel.boomAngleSensor_F) //console.log(appModel.grabClosurePilotPressureSensor_F) } font.family: alibaba.name font.pointSize: 14 } Text { id: safetyValvesText1 text: "未开启" visible: appModel.safetyValves === 0 color: "red" anchors.left: safetyValvesText.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } } Row { //下位机故障警告 id: faulty anchors.top: safetyValvesShow.bottom anchors.topMargin: 30 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: faultyImage anchors.left: faulty.left anchors.leftMargin: 30 width: 24 height: 24 fillMode: Image.Stretch source: 'qrc:/images/faulty.png' anchors.horizontalCenter: statusData.horizontalCenter } Text { id: faultyText text: "故障:" color: mainTextColor anchors.left: faultyImage.right anchors.leftMargin: 30 font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 20 Timer { id: timer interval: textList[currentIndex].visible ? 3000 : 0 running: true repeat: true onTriggered: { //console.log("动臂倾角故障",appModel.boomAngleSensor_F) do { currentIndex = (currentIndex + 1) % textList.length } while (!textList[currentIndex].visible) } } Text { id: faultyTextValue anchors.left: faultyText.right anchors.leftMargin: 30 text: textList[currentIndex].text color: 'red' font.family: alibaba.name font.pointSize: 14 visible: textList[currentIndex].visible anchors.horizontalCenter: statusData.horizontalCenter } } Row { //仪表盘1 id: dashboard1 anchors.top: faulty.bottom anchors.topMargin: 100 anchors.left: carDataColumn.left anchors.leftMargin: 10 Image { id: dashboardImage1 z: 99 height: 200 width: 200 fillMode: Image.Stretch visible: true source: 'qrc:/images/engineSpeed.png' } Image { id: pointer1 x: dashboardImage1.width / 2 - pointer1.width / 2 - 20 y: dashboardImage1.height / 2 - pointer1.height / 2 + 10 z: 99 height: 94 / 2 width: 140 / 2 fillMode: Image.Stretch visible: true source: 'qrc:/images/pointer.png' Component.onCompleted: { posPointer1Timer.start() } transform: Rotation { id: rotation origin.x: pointer1.width / 2 + 20 origin.y: pointer1.height / 2 - 10 angle: 0 } } RotationAnimation { id: posPointer1 target: rotation from: 0 to: 0 duration: 100 } Timer { id: posPointer1Timer interval: 500 repeat: true onTriggered: { //posPointer1.from = 0 //posPointer1.to = (appModel.engineSpeed/5000)*240 posPointer1.to = appModel.engineSpeed / 5000 * 240 posPointer1.from = posPointer1.to posPointer1.start() } } Text { id: dashboard1Text anchors.bottom: dashboardImage1.bottom anchors.bottomMargin: -40 anchors.left: dashboard1.left anchors.leftMargin: 55 text: "发动机转速" color: mainTextColor font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } Text { id: dashboard1Text1 anchors.bottom: dashboard1Text.bottom anchors.bottomMargin: -20 anchors.left: dashboard1Text.left anchors.leftMargin: 25 text: "rpm" color: mainTextColor font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: dashboardImage1TextValue anchors.bottom: dashboard1Text1.bottom anchors.bottomMargin: -35 anchors.left: dashboard1Text1.left anchors.leftMargin: 0 text: appModel.engineSpeed //color: appModel.engineSpeed >= 4000 ? 'red' : '#FFFFFF' color:'#FFFFFF' Component.onCompleted: { console.log("appModel.engineSpeed", appModel.engineSpeed) } font.family: digtalFont.name font.pointSize: 18 } Image { id: circle_green1 anchors.bottom: dashboard1Text1.bottom anchors.bottomMargin: -45 anchors.left: dashboard1Text.left anchors.leftMargin: -10 z: 99 height: 40 width: 110 fillMode: Image.Stretch visible: true source: 'qrc:/images/circle_green1.png' } } Row { //仪表盘2 id: dashboard2 anchors.top: faulty.bottom anchors.topMargin: 100 anchors.left: dashboard1.right anchors.leftMargin: 230 Image { id: dashboardImage2 z: 99 height: 200 width: 200 fillMode: Image.Stretch visible: true source: 'qrc:/images/carSpeed.png' } Image { id: pointer2 x: dashboardImage2.width / 2 - pointer2.width / 2 - 20 y: dashboardImage2.height / 2 - pointer2.height / 2 + 10 z: 99 height: 94 / 2 width: 140 / 2 fillMode: Image.Stretch visible: true source: 'qrc:/images/pointer.png' Component.onCompleted: { posPointer2Timer.start() } transform: Rotation { id: rotation2 origin.x: pointer2.width / 2 + 20 origin.y: pointer2.height / 2 - 10 angle: 0 } } RotationAnimation { id: posPointer2 target: rotation2 from: 0 to: 0 duration: 100 } Timer { id: posPointer2Timer interval: 500 repeat: true onTriggered: { posPointer2.to = appModel.travelSpeed / 100 / 30 * 240 posPointer2.from = posPointer2.to //posPointer2.to = 240 posPointer2.start() } } Text { id: dashboard2Text anchors.bottom: dashboardImage2.bottom anchors.bottomMargin: -40 anchors.left: dashboard2.left anchors.leftMargin: 60 text: "行驶速度" color: mainTextColor font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } Text { id: dashboard2Text1 anchors.bottom: dashboard2Text.bottom anchors.bottomMargin: -20 anchors.left: dashboard2Text.left anchors.leftMargin: 15 text: "km/h" color: mainTextColor font.family: alibaba.name font.pointSize: 14 anchors.horizontalCenter: statusData.horizontalCenter } spacing: 50 Text { id: dashboardImage2TextValue anchors.bottom: dashboard2Text1.bottom anchors.bottomMargin: -35 anchors.left: dashboard2Text1.left anchors.leftMargin: 10 text: appModel.travelSpeed / 100 color: appModel.travelSpeed / 100 >= 30 ? 'red' : '#FFFFFF' Component.onCompleted: { console.log("appModel.travelSpeed", appModel.travelSpeed) } font.family: digtalFont.name font.pointSize: 18 } Image { id: circle_green2 anchors.bottom: dashboard2Text1.bottom anchors.bottomMargin: -45 anchors.left: dashboard2Text.left anchors.leftMargin: -20 z: 99 height: 40 width: 110 fillMode: Image.Stretch visible: true source: 'qrc:/images/circle_green1.png' } } } //登录界面最左侧上边框 Image { id: sideUp_right1 z: 99 anchors.left: statusLeftLogin.left anchors.leftMargin: 1475 anchors.top: statusLeftLogin.top anchors.topMargin: 0 fillMode: Image.Stretch visible: true source: 'qrc:/images/sideUp_right2.png' } //登录界面最左侧上边框 Image { id: sideUp_left1 z: 99 anchors.left: statusLeftLogin.left anchors.leftMargin: 1475 + 345 anchors.top: statusLeftLogin.top anchors.topMargin: 0 fillMode: Image.Stretch visible: true source: 'qrc:/images/sideUp_left1.png' } //登录界面最左侧下边框 Image { id: sideDown_left1 z: 99 height: 400 anchors.left: statusLeftLogin.left anchors.leftMargin: 1475 anchors.top: sideUp_left.bottom anchors.topMargin: 0 fillMode: Image.Stretch source: 'qrc:/images/sideDown_left.png' } //登录界面最右侧下边框 Image { id: sideDown_right1 z: 99 height: 400 anchors.left: statusLeftLogin.right anchors.leftMargin: 1475 + 295 anchors.top: sideUp_right.bottom anchors.topMargin: 0 - 3 fillMode: Image.Stretch visible: true source: 'qrc:/images/sideDown_right.png' } Rectangle { id: statusRightLogin anchors.top: statusLeftLogin.top anchors.topMargin: 70 anchors.left: statusLeftLogin.left anchors.leftMargin: 1400 color: 'transparent' Image { id: iRadar_car_G width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car.png' visible: (appModel.radar1 >= radarGreenRange) && (appModel.radar2 >= radarGreenRange) && (appModel.radar3 >= radarGreenRange) && (appModel.radar4 >= radarGreenRange) && (appModel.radar5 >= radarGreenRange) && (appModel.radar6 >= radarGreenRange) && (appModel.radar7 >= radarGreenRange) && (appModel.radar8 >= radarGreenRange) } Image { id: iRadar_car_G1 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G1.png' visible: (radarGreenOutRange >= appModel.radar1) && (appModel.radar1 >= radarGreenRange) } Image { id: iRadar_car_G2 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G2.png' visible: (radarGreenOutRange >= appModel.radar2) && (appModel.radar2 >= radarGreenRange) } Image { id: iRadar_car_G3 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G3.png' visible: (radarGreenOutRange >= appModel.radar3) && (appModel.radar3 >= radarGreenRange) } Image { id: iRadar_car_G4 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G4.png' visible: (radarGreenOutRange >= appModel.radar4) && (appModel.radar4 >= radarGreenRange) } Image { id: iRadar_car_G5 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G5.png' visible: (radarGreenOutRange >= appModel.radar5) && (appModel.radar5 >= radarGreenRange) } Image { id: iRadar_car_G6 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G6.png' visible: (radarGreenOutRange >= appModel.radar6) && (appModel.radar6 >= radarGreenRange) } Image { id: iRadar_car_G7 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G7.png' visible: (radarGreenOutRange >= appModel.radar7) && (appModel.radar7 >= radarGreenRange) } Image { id: iRadar_car_G8 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_G8.png' visible: (radarGreenOutRange >= appModel.radar8) && (appModel.radar8 >= radarGreenRange) } Image { id: iRadar_car_R width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R0.png' visible: appModel.radar1 <= radarRedRange || appModel.radar2 <= radarRedRange || appModel.radar3 <= radarRedRange || appModel.radar4 <= radarRedRange || appModel.radar5 <= radarRedRange || appModel.radar6 <= radarRedRange || appModel.radar7 <= radarRedRange || appModel.radar8 <= radarRedRange } Image { id: iRadar_car_R1 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R1.png' visible: appModel.radar1 <= radarRedRange } Image { id: iRadar_car_R2 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R2.png' visible: appModel.radar2 <= radarRedRange } Image { id: iRadar_car_R3 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R3.png' visible: appModel.radar3 <= radarRedRange } Image { id: iRadar_car_R4 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R4.png' visible: appModel.radar4 <= radarRedRange } Image { id: iRadar_car_R5 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R5.png' visible: appModel.radar5 <= radarRedRange } Image { id: iRadar_car_R6 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R6.png' visible: appModel.radar6 <= radarRedRange } Image { id: iRadar_car_R7 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R7.png' visible: appModel.radar7 <= radarRedRange } Image { id: iRadar_car_R8 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_R8.png' visible: appModel.radar8 <= radarRedRange } Image { id: iRadar_car_Y width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y0.png' visible: ((appModel.radar1 > radarRedRange) || (appModel.radar2 > radarRedRange) || (appModel.radar3 > radarRedRange) || (appModel.radar4 > radarRedRange) || (appModel.radar5 > radarRedRange) || (appModel.radar6 > radarRedRange) || (appModel.radar7 > radarRedRange) || (appModel.radar8 > radarRedRange)) && (!((appModel.radar1 >= radarGreenRange) && (appModel.radar2 >= radarGreenRange) && (appModel.radar3 >= radarGreenRange) && (appModel.radar4 >= radarGreenRange) && (appModel.radar5 >= radarGreenRange) && (appModel.radar6 >= radarGreenRange) && (appModel.radar7 >= radarGreenRange) && (appModel.radar8 >= radarGreenRange))) && (!(appModel.radar1 <= radarRedRange || appModel.radar2 <= radarRedRange || appModel.radar3 <= radarRedRange || appModel.radar4 <= radarRedRange || appModel.radar5 <= radarRedRange || appModel.radar6 <= radarRedRange || appModel.radar7 <= radarRedRange || appModel.radar8 <= radarRedRange)) } Image { id: iRadar_car_Y1 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y1.png' visible: appModel.radar1 < radarGreenRange && appModel.radar1 > radarRedRange } Image { id: iRadar_car_Y2 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y2.png' visible: appModel.radar2 < radarGreenRange && appModel.radar2 > radarRedRange } Image { id: iRadar_car_Y3 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y3.png' visible: appModel.radar3 < radarGreenRange && appModel.radar3 > radarRedRange } Image { id: iRadar_car_Y4 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y4.png' visible: appModel.radar4 < radarGreenRange && appModel.radar4 > radarRedRange } Image { id: iRadar_car_Y5 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y5.png' visible: appModel.radar5 < radarGreenRange && appModel.radar5 > radarRedRange } Image { id: iRadar_car_Y6 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y6.png' visible: appModel.radar6 < radarGreenRange && appModel.radar6 > radarRedRange } Image { id: iRadar_car_Y7 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y7.png' visible: appModel.radar7 < radarGreenRange && appModel.radar7 > radarRedRange } Image { id: iRadar_car_Y8 z: 99 width: 350 height: 550 anchors.top: statusRightLogin.top anchors.topMargin: 0 anchors.left: statusRightLogin.left anchors.leftMargin: 120 anchors.horizontalCenter: radarData.horizontalCenter fillMode: Image.Stretch source: 'qrc:/images/radar_car_Y8.png' visible: appModel.radar8 < radarGreenRange && appModel.radar8 > radarRedRange } Row { id: iText1 height: parent.height anchors.top: statusRightLogin.top anchors.topMargin: 50 anchors.left: statusRightLogin.left anchors.leftMargin: 90 Text { text: "雷达前左:" color: mainTextColor anchors.left: iText1.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar1 text: (appModel.radar1 / 1000).toFixed(2) color: mainTextColor anchors.left: iText1.left anchors.leftMargin: 110 font.family: alibaba.name font.pointSize: radarTxtSize } Text { text: "雷达前右:" color: mainTextColor anchors.left: iText1.left anchors.leftMargin: 270 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar2 text: (appModel.radar2 / 1000).toFixed(2) color: mainTextColor anchors.left: iText1.left anchors.leftMargin: 360 font.family: alibaba.name font.pointSize: radarTxtSize } } Row { id: iText2 height: parent.height anchors.top: iText1.bottom anchors.topMargin: 35 anchors.left: statusRightLogin.left anchors.leftMargin: 90 visible: true Text { text: "雷达左前:" color: mainTextColor anchors.left: iText2.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar3 text: (appModel.radar8 / 1000).toFixed(2) color: mainTextColor anchors.left: iText2.left anchors.leftMargin: 110 font.family: alibaba.name font.pointSize: radarTxtSize } Text { text: "雷达右前:" color: mainTextColor anchors.left: iText2.left anchors.leftMargin: 270 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar4 text: (appModel.radar3 / 1000).toFixed(2) color: mainTextColor anchors.left: iText2.left anchors.leftMargin: 360 font.family: alibaba.name font.pointSize: radarTxtSize } } Row { id: iText3 height: parent.height anchors.top: iText2.bottom anchors.topMargin: 35 anchors.left: statusRightLogin.left anchors.leftMargin: 90 Text { text: "雷达左后:" color: mainTextColor anchors.left: iText3.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar5 text: (appModel.radar7 / 1000).toFixed(2) color: mainTextColor anchors.left: iText3.left anchors.leftMargin: 110 font.family: alibaba.name font.pointSize: radarTxtSize } Text { text: "雷达右后:" color: mainTextColor anchors.left: iText3.left anchors.leftMargin: 270 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar6 text: (appModel.radar4 / 1000).toFixed(2) color: mainTextColor anchors.left: iText3.left anchors.leftMargin: 360 font.family: alibaba.name font.pointSize: radarTxtSize } } Row { id: iText4 height: parent.height anchors.top: iText3.bottom anchors.topMargin: 35 anchors.left: statusRightLogin.left anchors.leftMargin: 90 Text { text: "雷达后左:" color: mainTextColor anchors.left: iText4.left anchors.leftMargin: 20 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar7 text: (appModel.radar6 / 1000).toFixed(2) color: mainTextColor anchors.left: iText4.left anchors.leftMargin: 110 font.family: alibaba.name font.pointSize: radarTxtSize } Text { text: "雷达后右:" color: mainTextColor anchors.left: iText4.left anchors.leftMargin: 270 font.family: alibaba.name font.pointSize: radarTxtSize } Text { id: radar8 text: (appModel.radar5 / 1000).toFixed(2) color: mainTextColor anchors.left: iText4.left anchors.leftMargin: 360 font.family: alibaba.name font.pointSize: radarTxtSize } } /*Rectangle { id: rtkState width: 357 height: 35 color: 'yellow' anchors.top: iText4.bottom anchors.topMargin: 400 anchors.left: statusRightLogin.left anchors.leftMargin: 120 radius: 5 Text { id: rtkStatetxt text: appModel.imux==1 ? "RTK定位正常":"RTK定位错误" color: appModel.imux==1 ? 'green':'red' font.family: alibaba.name font.pointSize: 18 anchors.horizontalCenter: rtkState.horizontalCenter } visible: true }*/ Rectangle { id: warning width: 357 height: 35 color: popupBgColorErr anchors.top: iText4.bottom anchors.topMargin: 400 anchors.left: statusRightLogin.left anchors.leftMargin: 120 radius: 5 Text { id: warningtxt text: qsTr("注意保持车距") color: '#FFFFFF' font.family: alibaba.name font.pointSize: 18 anchors.horizontalCenter: warning.horizontalCenter } visible: (appModel.radar1 <= radarRedRange || appModel.radar2 <= radarRedRange || appModel.radar3 <= radarRedRange || appModel.radar4 <= radarRedRange || appModel.radar5 <= radarRedRange || appModel.radar6 <= radarRedRange || appModel.radar7 <= radarRedRange || appModel.radar8 <= radarRedRange) } Rectangle { id: backImgRect width: 400 height: 320 color: 'transparent' anchors.top: iText4.bottom anchors.topMargin: 510 anchors.left: statusRightLogin.left anchors.leftMargin: 100 border.color: "red" border.width: 1 Image { id: backImg anchors.topMargin: 140 width: parent.width height: parent.height sourceSize: Qt.size(width, height) fillMode: Image.Stretch//拉伸模式 //fillMode: Image.PreserveAspectFit//保持宽高比例适应模式 //fillMode: Image.PreserveAspectCrop //保持宽高比裁剪模式 //fillMode: Image.Tile//平铺模式 z: 98 } //后视摄像头 Connections { target: BackImage onCallQmlRefeshBackImg: { //aaa backImg.source = "" backImg.source = "image://BackImage/"+Math.random() } } Image { id: backImg_camera1 anchors.topMargin: 140 width: parent.width height: parent.height fillMode: Image.Stretch visible: true source: 'qrc:/images/panel_camera1.png' z: 98 } } } } } color: 'transparent' } Rectangle { width: parent.width height: 80 color: 'transparent' z: 99 Image { anchors.horizontalCenter: parent.horizontalCenter fillMode: Image.PreserveAspectFit source: 'qrc:/images/banner.png' } Text { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter text: textTitle font.family: alibaba.name font.pointSize: 24 color: mainTextColor } } StackView { id: stack initialItem: page_login anchors.fill: parent } LoginPage { id: page_login visible: false } CarPage { id: page_car visible: false } WorkPage { id: page_work visible:false } DetailPage { id: page_detail visible: false } Dialog { id: backDialog visible: false modal: true x: (parent.width - width) / 2 y: (parent.height - height) / 2 closePolicy: Popup.NoAutoClose implicitWidth: 600 implicitHeight: 300 Text { text: back_content font.pointSize: 24 font.family: alibaba.name color: '#000000' anchors.horizontalCenter: parent.horizontalCenter y: 100 } Row { height: parent.height anchors.horizontalCenter: parent.horizontalCenter y: 200 CButton { id: quitButton textHeight: 50 fontHeight: 0.4 width: 150 height: 50 color: pressed ? textClickedColor : mainAppColor text: "确定" onClicked: { appModel.controlCar(uid); backDialog.visible = false; // videoWindow.close() // rootItem.qmlSignalQuit() } } spacing: 50 CButton { id: cancelBtn textHeight: 50 fontHeight: 0.4 width: 150 height: 50 color: pressed ? textClickedColor : mainAppColor text: "取消" onClicked: { appModel.cancelControl() backDialog.visible = false } } } } Dialog { id: trackDialog visible: false modal: true x: (parent.width - width) / 2 y: (parent.height - height) / 2 closePolicy: Popup.NoAutoClose implicitWidth: 600 implicitHeight: 300 Text { text: back_content font.pointSize: 24 font.family: alibaba.name color: '#000000' anchors.horizontalCenter: parent.horizontalCenter y: 100 } Row { height: parent.height anchors.horizontalCenter: parent.horizontalCenter y: 200 CButton { id: yesBtn textHeight: 50 fontHeight: 0.4 width: 150 height: 50 color: pressed ? textClickedColor : mainAppColor text: "是" onClicked: { track(); trackDialog.visible = false; // videoWindow.close() // rootItem.qmlSignalQuit() } } spacing: 50 CButton { id: noBtn textHeight: 50 fontHeight: 0.4 width: 150 height: 50 color: pressed ? textClickedColor : mainAppColor text: "否" onClicked: { unTrack(); trackDialog.visible = false } } } } Dialog { id: moveErrorDlg visible: false modal: true x: (parent.width - width) / 2 y: (parent.height - height) / 2 closePolicy: Popup.NoAutoClose implicitWidth: 600 implicitHeight: 300 Text { text: move_content font.pointSize: 24 font.family: alibaba.name color: '#000000' anchors.horizontalCenter: parent.horizontalCenter y: 100 } Row { height: parent.height anchors.horizontalCenter: parent.horizontalCenter y: 200 CButton { id: exbutton textHeight: 50 fontHeight: 0.4 width: 150 height: 50 color: pressed ? textClickedColor : mainAppColor text: "确定" onClicked: { appModel.controlCar(uid); backDialog.visible = false; // videoWindow.close() // rootItem.qmlSignalQuit() } } } } }