2017-01-05 10 views
1

Soweit ich weiß, gibt es in QtQuick keine integrierte Funktionalität für andockbare Container. Ich habe ein paar Quellen gefunden, in denen das hinzugefügt wird, aber ich habe Schwierigkeiten zu entscheiden, welchen Weg ich gehen soll.Andocken in QtQuick

https://developer.blackberry.com/native/documentation/dev/custom_components/index.html

How to get a QMainWindow from ApplicationWindow QML file to allow use of QDockWidget with QML files

Kann jemand einen Weg (oder vorzugsweise eine Bibliothek) empfehlen Andocken an QtQuick hinzufügen?

+1

Es gibt nichts, für den Augenblick, aber es ist nicht so schwer zu DIY ist. – dtech

+0

Ich denke, "nicht so schwer" ist im Auge des Betrachters, da ich ziemlich neu bin. Hast du einen Zeiger, wie man das umsetzt? Ist das Reparieren auf ein neues Fenster ein praktikabler Weg, um den "abgedockten" Zustand zu implementieren? –

+1

Ja, wenn Sie bereit sind für Multi-Fenster zu gehen. Sie könnten auch ein Floating-Element im aktuellen Fenster haben. – dtech

Antwort

2

Ich habe eine Lösung gefunden, die mit mehreren Fenstern funktioniert und ein Widget vom Hauptfenster (angedockter Zustand) in ein neues Fenster (abgedockter Zustand) versetzt.

der Hoffnung, dass dies für andere nützlich ist hier ein komplettes Beispiel:

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.0 
import QtQuick.Window 2.2 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    Window { 
     width: 100; 
     height: 100; 
     visible: false; 
     id: wnd 

     Rectangle { 
      id: greenRect 
      anchors.fill: parent 
     } 

     onClosing: { 
      blueRect.state = "docked" 
     } 

    } 

    Item { 
     width: 200; height: 100 

     Rectangle { 
      id: redRect 
      anchors.fill: parent 
     } 

     Rectangle { 
      id: blueRect 
      width: 50; height: 50 
      x: 10; y: 10; 
      color: "blue" 

      states: [ 
       State { 
        name: "undocked" 
        ParentChange { target: blueRect; parent: greenRect; x: 10; y: 10 } 
       }, 
       State { 
        name: "docked" 
        ParentChange { target: blueRect; parent: redRect; x: 10; y: 10 } 
       } 
      ] 

      MouseArea { 
       anchors.fill: parent; 
       onClicked: { 
        blueRect.state = "undocked" 
        wnd.visible = true 
       } 
      } 
     } 
    } 
} 
Verwandte Themen