So blenden Sie eine QML-Fenster, wenn es den Fokus verliert

Ich versuche, erstellen Sie ein Kombinationsfeld mit Mehrfachauswahl mit QML. Seine dropdown wird ein QML-Fenster mit der Flagge Qt.Popup, es wird also nicht über eine Titelleiste. Das dropdown sollte verschwinden, wenn der Benutzer klickt außerhalb.

Habe ich versucht den folgenden code:

import QtQuick 2.0
import QtQuick.Window 2.0

Window { id: mainWindow
    width: 200
    height: 200
    MouseArea {
        anchors.fill: parent
        onClicked: {
            dropdown.x = mainWindow.x + 50;
            dropdown.y = mainWindow.y + 50;
            dropdown.visible = true;
        }
    }

    Window { id: dropdown
        height: 200
        width: 200
        flags: Qt.Popup
        color: 'green'
        visible: false
        onVisibleChanged: {
            if (visible) {
                focusScope.focus = true;
                focusScope.forceActiveFocus();
            }
        }

        FocusScope { id: focusScope
            focus: true
            anchors {
                fill: parent
            }

            onActiveFocusChanged: {
                if (!activeFocus) {
                    dropdown.visible = false;
                }
            }
        }
    }
}

Aber es funktioniert nicht.

Im obigen code, wenn der Benutzer klickt auf das Haupt-Fenster, ein popup angezeigt und wenn der Benutzer klickt auf ein anderes Fenster oder auf die Titelleiste des Hauptfensters sollte es verschwinden, aber es nicht tun.

Wenn ich die import version 2.1 von QtQuick.Fenster statt 2.0 ich kann ein 'onActiveChanged' handler (ohne einen Fehler) in der dropdown-Fenster, aber es wird nie aufgerufen.

Vielleicht wäre ich in der Lage sein, dies zu tun mit einigen C++, aber ich versuche das zu vermeiden.

Ich benutze Qt 5.1.1 auf Ubuntu 13.10.

Danke.

Update: wechselte ich auf Qt 5.2 und das problem gelöst (siehe meine Antwort unten).

  • Bitte geben Sie weitere details. Was wollen Sie erreichen? Welchen Fehler hast du bekommen?
  • Ich aktualisiert meine Frage.
  • Tut dropdown verschwinden, nachdem Sie folgende Schritte aus: klicken Sie auf dem Hauptfenster, dann auf dropdown, dann auf die wichtigsten Fenster-Titel?
  • Ja, es verschwindet.
InformationsquelleAutor silviubogan | 2013-12-07
Schreibe einen Kommentar