Меня беспокоит создание массива объектов с большим количеством данных в qml с использованием платформы Windows (это единственный случай, когда происходит сбой). По какой-то причине происходит сбой приложения, если функция обработки занимает слишком много времени!
Я собираюсь проиллюстрировать частью кода, что я хочу сделать:
main.qml
import QtQuick 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
id: window
title: "Stack"
visible: true
width: 1400
Page {
id: page
anchors.fill: parent
property int responsiveWidth: 1000
property int maximumWidth: 900
ScrollView {
id:configScroll
anchors.fill: parent
GridLayout {
columns: 2
width: page.width > page.responsiveWidth ? page.maximumWidth : page.width
anchors.top: parent.top
anchors.left: parent.left
anchors.leftMargin: page.width > page.responsiveWidth ? (page.width - childrenRect.width)/2 : 10
anchors.rightMargin: page.width > page.responsiveWidth ? 0 : 10
Button {
property bool test: true
text: "array func"
onClicked: {
var panelModes=[], rows=[],groupsModes=[], panelLabel="panel", sounderLabel="sounder",soundersModeLabel="sounder mode",sounderGroupLabel="sounder group"
for(var gSndrModeAdd=0; gSndrModeAdd<1000;gSndrModeAdd++) {
panelModes = []
for(var pSndrModeAdd=0; pSndrModeAdd<32; pSndrModeAdd++) {
rows = []
rows.push(["C1",1])
rows.push(["C2",1])
for(var sSndrModeAdd=0; sSndrModeAdd<32; sSndrModeAdd++) {
rows.push(["L1S"+(sSndrModeAdd+1),1])
rows.push(["L2S"+(sSndrModeAdd+1),1])
rows.push(["L3S"+(sSndrModeAdd+1),1])
rows.push(["L4S"+(sSndrModeAdd+1),1])
}
panelModes.push({"label":panelLabel, "value": 1, "headers":[sounderLabel,soundersModeLabel],"rows":rows})
}
groupsModes.push({"label":sounderGroupLabel,"value":1,"nested":panelModes})
}
console.log("the array is: ")
console.log(groupsModes)
}
}
}
}
}
}
Это вылетает.
Если это не проблема с массивом, связана ли эта проблема с памятью? что-то подобное?
Это необходимо для построения структуры, которую я хочу. Есть ли способ решить это?
Ошибка, которую я получаю на консоли:
09:45:07: The program has unexpectedly finished.
09:45:07: The process was ended forcefully.
09:45:07: C:/Dev/QT/build-array-crash-limit-Desktop_Qt_5_11_1_MinGW_32bit-Debug/debug/array-crash-limit.exe crashed.
Мне удалось поймать Memory usage
с помощью QML Profiler
, если я установил первый для цикла на 300.
