2024-06-13 15:41:40 +08:00
|
|
|
import QtQuick
|
|
|
|
import QtQuick.Controls
|
|
|
|
import QtQuick.Layouts
|
2024-09-05 16:36:54 +08:00
|
|
|
import Fluent as Fluent
|
2024-06-13 15:41:40 +08:00
|
|
|
import Analyser
|
|
|
|
|
|
|
|
Window {
|
2024-09-05 16:36:54 +08:00
|
|
|
id: window
|
|
|
|
width: 1220
|
|
|
|
height: 890
|
2024-06-13 15:41:40 +08:00
|
|
|
visible: true
|
2024-06-21 18:08:23 +08:00
|
|
|
title: qsTr(Qt.application.name + " " + Qt.application.version)
|
2024-06-13 15:41:40 +08:00
|
|
|
|
|
|
|
OperationItem {
|
|
|
|
id: operationItem
|
2024-09-05 16:36:54 +08:00
|
|
|
width: 510
|
2024-06-13 15:41:40 +08:00
|
|
|
anchors.top: parent.top
|
|
|
|
}
|
|
|
|
|
|
|
|
Item {
|
|
|
|
id: resultGroupBox
|
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
width: 220
|
|
|
|
Text {
|
|
|
|
id: resultGroupBoxTitle
|
|
|
|
text: "识别结果"
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.top: parent.top
|
|
|
|
height: 30
|
|
|
|
}
|
|
|
|
ScrollView {
|
|
|
|
id: resultView
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.top: resultGroupBoxTitle.bottom
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
TextArea {
|
|
|
|
id: resultBrowser
|
|
|
|
font.pixelSize: 14
|
|
|
|
readOnly: true
|
|
|
|
wrapMode: TextArea.WordWrap
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Button {
|
|
|
|
text: "清空"
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
onClicked: resultBrowser.clear()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ColumnLayout {
|
|
|
|
anchors.left: operationItem.right
|
|
|
|
anchors.right: resultGroupBox.left
|
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
TabBar {
|
|
|
|
id: bar
|
|
|
|
width: parent.width
|
|
|
|
TabButton {
|
|
|
|
implicitWidth: 100
|
|
|
|
text: qsTr("视频流")
|
|
|
|
}
|
|
|
|
TabButton {
|
|
|
|
text: qsTr("日志")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
StackLayout {
|
|
|
|
width: parent.width
|
|
|
|
currentIndex: bar.currentIndex
|
|
|
|
clip: true
|
|
|
|
Image {
|
|
|
|
id: image
|
|
|
|
cache: false
|
|
|
|
fillMode: Image.PreserveAspectFit
|
|
|
|
rotation: 90
|
|
|
|
source: "image://videoframe/"
|
|
|
|
}
|
|
|
|
Item {
|
|
|
|
ScrollView {
|
|
|
|
id: view
|
|
|
|
anchors.fill: parent
|
|
|
|
TextArea {
|
|
|
|
id: logBrowser
|
|
|
|
readOnly: true
|
|
|
|
wrapMode: TextArea.WordWrap
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Button {
|
|
|
|
text: "清空"
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
onClicked: logBrowser.clear()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-09-05 16:36:54 +08:00
|
|
|
Fluent.InfoBar{
|
|
|
|
id:info_bar
|
|
|
|
root: window
|
|
|
|
layoutY: 10
|
|
|
|
}
|
|
|
|
|
2024-06-13 15:41:40 +08:00
|
|
|
Connections {
|
|
|
|
target: App
|
|
|
|
function onNewLog(text) {
|
|
|
|
logBrowser.append(text)
|
|
|
|
}
|
2024-09-05 16:36:54 +08:00
|
|
|
function onNewStatusTip(level, tip, detailMessage) {
|
|
|
|
if (level === App.Tip) {
|
|
|
|
info_bar.showSuccess(tip,2000,detailMessage)
|
|
|
|
} else if (level === App.Warnging) {
|
|
|
|
info_bar.showWarning(tip,2000,detailMessage)
|
2024-06-13 15:41:40 +08:00
|
|
|
} else if (level === 1) {
|
|
|
|
statusTip.icon = "../resources/warning.svg"
|
2024-06-21 18:08:23 +08:00
|
|
|
statusTip.color = "#FAFAD2"
|
2024-06-13 15:41:40 +08:00
|
|
|
statusTip.show(tip, 2000)
|
|
|
|
} else if (level === 2) {
|
2024-09-05 16:36:54 +08:00
|
|
|
info_bar.showInfo(tip,2000,detailMessage)
|
|
|
|
resultBrowser.append(tip+":"+detailMessage)
|
2024-06-13 15:41:40 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
function onNewVideoFrame() {
|
|
|
|
image.source = ""
|
|
|
|
image.source = "image://videoframe/"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|