Друзья, не особо люблю GUI-программирование, но решил заняться QML.
Задача следующая: когда выбирается пункт меню "О программе..." нужно:
1. Создать диалог (AboutWindow.qml).
2. Отобразить его на экране в модальном режиме.
3. Когда диалог будет закрыть, уничтожить его.
Вот рабочий набросок, но с изъяном - при открытом диалоге и завершении программы (например, на десктопе закрываем главное окно (Alt+F4)) в destroyAboutWindow() диалог уже находится в процессе уничтожения.
ApplicationWindow {
Menu {
MenuItem {
text: qsTr("About...")
onTriggered: {
//TODO: At open dialog and app closing: TypeError: Property 'destroy' of object TypeError: Type error is not a function
function destroyAboutWindow() {
object.destroy()
}
var component = Qt.createComponent("AboutWindow.qml")
var object = component.createObject(appWindow)
console.assert(object)
object.open()
object.closed.connect(destroyAboutWindow)
}
}
}
}
Вытекающий подвопрос: как идиоматически воплотить на QML следующую конструкцию (это искусственный пример - просто для иллюстрации):
void showAboutDialog()
{
auto dialog = new QDialog;
dialog->deleteLater();
dialog->exec(); // blocking call, shows modal dialog with its own event loop
}
?