2014-07-04 92 views
1

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

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(); 
    } 
    } 
} 

但我不知道我怎么可以得到一些回报值对话框关闭后。

+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参数的文件,我们看到它在稍微详细真实解释说:

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

+0

感谢@Mitch,Connections的想法正是我需要的。 – folibis

+0

所以,我使用'onClosing'信号。不幸的是,当我用x按钮关闭窗口时会触发,当我从代码关闭窗口时不起作用:'dlg.close()'。也许QML中有一些错误? – folibis

+0

是的,这就是为什么我建议'onVisibleChanged'。这不是一个错误,它可以被记录得更好一点。我已经更新了我的答案。 – Mitch