正当我调试试图销毁由Qt.createComponent(...)
动态创建的弹出窗口的程序时,它偶尔会发生异常。
以下是相关代码:
ApplicationWindow {
id: window
property var dialog
...
Component.onCompleted: {
var dialogComponent = Qt.createComponent("qrc:/TestPopup.qml")
dialog = dialogComponent.createObject(...)
dialog.closed.connect(function(){ [] })
dialog.open()
}
Timer {
id: timer
interval: 3000
triggeredOnStart: false
running: false
onTriggered: dialog.destroy()
}
TestPopup.qml:
Popup {
id: popup
modal: true
...
Button {
text: "close"
anchors.centerIn: parent
onClicked: popup.close()
}
}
当[1]
为dialog.destroy()
时,极有可能发生异常。
当[1]
为timer.start()
时,它会偶尔发生异常。
如何安全地破坏弹出窗口?
答案 0 :(得分:0)
堆栈跟踪看起来类似于QTBUG-59532。您可以尝试应用该问题的修补程序,即https://codereview.qt-project.org/#/c/189581/(如果您使用的是SwipeDelegate
,也可以https://codereview.qt-project.org/#/c/189553/)。我没有在那条痕迹中看到SwipeDelegate
,但尝试它不会有什么坏处。
您可以尝试的另一件事是在Linux上使用valgrind运行您的应用程序,如here所述。