2017-01-06 2 views
3

Wie kann ich das Signal der roten 'x'-Taste in einem Dialog in qml abfangen?Wie bekomme ich Dialog rot 'x' Schliesse Knopfsignal in QML

Ich habe alle Signale von Qml Dialog versucht, und keiner scheint für die x rote Taste zu arbeiten.

+0

Haben Sie erwogen, 'onClosing' zu verwenden? https://doc-snapshots.qt.io/qt5-5.7/qml-qtquick-window-window.html#closing-signal –

+0

es ist kein Signal für den Dialog in qml: http://doc.qt.io/qt -5/qml-qtquick-dialogs-dialog.html # akzeptiert-signal – asdfasdf

+0

Wie wäre es mit 'onVisibleChanged' signal? – DuKes0mE

Antwort

0

Ich benutze Qt 5.9.1 auf Ubuntu und versuche zu erkennen, dass die Schaltfläche "x"/close in einem QML MessageDialog-Fenster angeklickt wird. Die Dokumentation zeigt in der Tat, dass OnRejected das Ereignis ist, das ausgelöst werden sollte - aber das tut es nicht! Also verwende ich onVisibleChanged und überprüfe, ob es NICHT sichtbar ist. Das funktioniert.

Item { 
    signal dialogClosed() 
    property string dialogTitle: "" 
    property int  dialogIcon: 0 
    property string dialogText: "" 
    property bool dialogVisible: false 
    MessageDialog { 
     id: messageDialog 
     title : dialogTitle 
     icon : dialogIcon 
     text : dialogText 
     visible : dialogVisible 
     modality: Qt.ApplicationModal 
     onAccepted: dialogClosed() 
     // onRejected: dialogClosed() // Doesn't work in when "x" is clicked as documented! 
     onVisibleChanged: { if(!this.visible) dialogClosed(); } 
    } 
}