Use QML
This commit is contained in:
159
ui/main_window.qml
Normal file
159
ui/main_window.qml
Normal file
@ -0,0 +1,159 @@
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 2.15
|
||||
import QtCharts 2.15
|
||||
|
||||
ApplicationWindow {
|
||||
visible: true
|
||||
width: 600
|
||||
height: 500
|
||||
title: "Load Controller"
|
||||
|
||||
property QtObject profile_handler
|
||||
property string profile: "None"
|
||||
property real profileTime: 0
|
||||
property real current: 0
|
||||
property string time: "00:00 / 00:00"
|
||||
property real voltage_min: 0
|
||||
property real voltage_max: 0
|
||||
property real temp_min: 0
|
||||
property real temp_max: 0
|
||||
|
||||
Connections {
|
||||
target: profile_handler
|
||||
|
||||
function onCurrentChanged(new_current) {
|
||||
console.log("currentChanged");
|
||||
current = new_current;
|
||||
}
|
||||
|
||||
function onProfileChanged(data) {
|
||||
profileSeries.clear();
|
||||
var last_x = 0;
|
||||
for (var point of data) {
|
||||
profileSeries.append(point[0], point[1]);
|
||||
last_x = point[0];
|
||||
}
|
||||
axisX.max = last_x;
|
||||
axisX.applyNiceNumbers();
|
||||
}
|
||||
}
|
||||
|
||||
onProfileTimeChanged: {
|
||||
currentTimeSeries.clear()
|
||||
currentTimeSeries.append(profileTime, 0)
|
||||
currentTimeSeries.append(profileTime, 100)
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: layout
|
||||
anchors.fill: parent
|
||||
spacing: 6
|
||||
ColumnLayout {
|
||||
RowLayout {
|
||||
Text {
|
||||
text: "Profile:"
|
||||
}
|
||||
Text {
|
||||
text: profile
|
||||
}
|
||||
Button {
|
||||
objectName: "profile_chooser"
|
||||
text: "Choose"
|
||||
}
|
||||
}
|
||||
ChartView {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
Layout.minimumWidth: 400
|
||||
Layout.minimumHeight: 400
|
||||
|
||||
antialiasing: true
|
||||
legend.visible: false
|
||||
|
||||
ValueAxis {
|
||||
id: axisX
|
||||
min: 0
|
||||
titleText: "Time [s]"
|
||||
}
|
||||
ValueAxis {
|
||||
id: axisY
|
||||
min: 0
|
||||
max: 100
|
||||
tickCount: 11
|
||||
titleText: "Current [A]"
|
||||
}
|
||||
LineSeries {
|
||||
id: profileSeries
|
||||
axisX: axisX
|
||||
axisY: axisY
|
||||
}
|
||||
LineSeries {
|
||||
id: currentTimeSeries
|
||||
axisX: axisX
|
||||
axisY: axisY
|
||||
XYPoint {x: 0; y: 0}
|
||||
XYPoint {x: 0; y: 100}
|
||||
visible: true
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
Button {
|
||||
objectName: "start_pause"
|
||||
text: "START"
|
||||
enabled: false
|
||||
}
|
||||
Button {
|
||||
objectName: "stop"
|
||||
text: "STOP"
|
||||
enabled: false
|
||||
}
|
||||
}
|
||||
}
|
||||
GridLayout {
|
||||
Text {
|
||||
text: "Current [A]:"
|
||||
Layout.row: 0
|
||||
Layout.column: 0
|
||||
}
|
||||
Text {
|
||||
text: current.toFixed(1)
|
||||
Layout.row: 0
|
||||
Layout.column: 1
|
||||
}
|
||||
Text {
|
||||
text: "Time [min]:"
|
||||
Layout.row: 1
|
||||
Layout.column: 0
|
||||
}
|
||||
Text {
|
||||
text: time
|
||||
Layout.row: 1
|
||||
Layout.column: 1
|
||||
}
|
||||
Text {
|
||||
text: "Voltage [V]:"
|
||||
Layout.row: 2
|
||||
Layout.column: 0
|
||||
}
|
||||
Text {
|
||||
text: "[" + voltage_min.toFixed(2) + ", " + voltage_max.toFixed(2) + "]"
|
||||
Layout.row: 2
|
||||
Layout.column: 1
|
||||
}
|
||||
Text {
|
||||
text: "Temperature [°C]:"
|
||||
Layout.row: 3
|
||||
Layout.column: 0
|
||||
}
|
||||
Text {
|
||||
text: "[" + temp_min.toFixed(1) + ", " + temp_max.toFixed(1) + "]"
|
||||
Layout.row: 3
|
||||
Layout.column: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
minimumWidth: layout.Layout.minimumWidth
|
||||
minimumHeight: layout.Layout.minimumHeight
|
||||
}
|
||||
Reference in New Issue
Block a user