从QML窗口返回值到父级

时间:2014-07-04 02:57:02

标签: qt qml qtquick2

我使用QML在我的app +简单逻辑中构建GUI。 在某个步骤,我打开对话框,关闭它后,我想取回一个结果值。 这是示例代码:

Button {
  id: myButton
  onClicked: {
    var component = Qt.createComponent("Dialog.qml");
    if (component.status === Component.Ready) {
        var dialog = component.createObject(parent);
        dialog.show();
        dialog.onClosing: {} // that not works
    }
  }
}

Dialog.qml:

import QtQuick 2.2
import QtQuick.Window 2.1
import QtQuick.Controls 1.1

Window {
  id: dialogWindow
  width: 800
  height: 600
  flags: Qt.Dialog

  Button {
    id: closeButton
    onClicked: {
      dialogWindow.close();
    }
  }
}

但我不知道在关闭对话框后如何获得一些返回值。

1 个答案:

答案 0 :(得分:3)

我的建议是不要打扰Window并使用Qt Quick Dialogs

如果要使用Window,则必须在窗口中以某些“是/否”按钮的形式定义自己的返回值,例如。单击其中一个时,将yes属性设置为true / false。然后,在Button

Connections {
    target: dialogWindow
    onVisibleChanged: // some action depending on value of "yes" property
}

请注意,我使用的是onVisibleChanged而不是onClosing,因为后者仅在user closing the window上发出:

  

当用户试图关闭窗口时会发出此信号。

如果我们按照CloseEvent参数的文档进行操作,我们会看到它的详细解释:

  

窗口系统即将关闭窗口的通知(例如,用户点击标题栏关闭按钮)。