【发布时间】:2018-03-07 23:27:30
【问题描述】:
我正面临一个非常奇怪的问题,将Loader 的源更改为ListElement(ListModel)。
如何重现它:
- 设置加载器的源
loader.source = "Page1.qml" - 再次更改加载器源
loader.setSource("Page2.qml", listModel.get(0)) - 最后像第一步一样再次更改源:
loader.source = "Page1.qml" - Segfault 会出现。
代码如下:
main.qml
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Button {
id: button
text: qsTr("Load page 1")
onClicked: mainLoader.source="Page1.qml"
}
Loader {
anchors.left: button.right
id: mainLoader
width: 149
height: 101
}
}
Page1.qml
Rectangle {
color: "red"
width: 149
height: 101
ListModel {
id: lmIcs
ListElement {
code: "1"
name: "Abdelilah"
lastname: "El Aissaoui"
}
}
Button {
text: "Load page 2"
onClicked: mainLoader.setSource("Page2.qml", lmIcs.get(0))
}
}
Page2.qml
Rectangle {
color: "lightgray"
width: 149
height: 101
property int code;
property string name;
property string lastname;
Text {
text: code + " - " + name + " " + lastname
}
}
我注意到,使用硬编码值更改加载 page2 的行会使段错误消失,但显然这不是解决方案:
onClicked: mainLoader.setSource("Page2.qml", {code: "1", name: "Abdelilah", lastname: "El Aissaoui" })
这是一个错误还是我做错了什么?
如果有帮助,我正在使用 Linux mint 17.3 并使用 CLang 和 GCC 进行编译。
【问题讨论】:
标签: qt segmentation-fault qml