Qt QML Umieszcza element nad szufladą

0

Pytanie

Walczę z bardzo prostym pytaniem..

Korzystanie z QT 5.15.2:

U nas jest prosta aplikacja z jednym głównym oknem i 2-3 подокном (na 1 poziom poniżej podstawowego). Okno główne składa się z elementu treści, nagłówka i niektórych elementów menu, rozproszonych wzdłuż głównego okna. Do tej pory podstrony otwierały się za pomocą elementu pocztowej.

Jednak szuflada zamyka przepustnice i tytuł po otwarciu, i trzeba ponownie utworzyć instancję klap i nagłówka w szufladzie, aby był widoczny. Nie jest to bardzo miłe. Czy jest jakiś sposób utożsamiać z-poziom, na którym otwiera się pudełko? (oczywiście instalacja z nie działa).


Item{
  id: id_mainWindow
  z: 0
  Drawer{
    id: id_subMenu1
    anchors.fill: parent
    z: 1
    
    /* Not so nice workaround */
    Button{
      id: id_subClose
      z: 100
      onClicked{
        id_subMenu1.close()
      }
    }
  }

  /* Unfortunately, this one gets hidden once, the drawer is open */
  Button{
    id: id_subOpenClose
    z: 100
    onClicked{
      if( id_subMenu1.open ){
        id_subMenu1.close()
      } else {
        id_subMenu1.open()
      }
    }
  }

}
qml qt qt5.15
2021-11-19 07:31:58
1

Najlepsza odpowiedź

0

Ja bym proponował, aby Drawer nie jest dobrym składnikiem do tej pracy, tak jak to technicznie Popup. Może zamiast tego warto sprawdzić komponent na pasku kart.

Tym nie mniej, to przepisz kod ponownie, aby twój Drawer otwiera się, nie obejmujące twój id_subOpenClose przycisk.

import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material

Rectangle {
    id: id_mainWindow
  
    anchors.fill: parent
  
    Drawer {
        id: id_subMenu1
    
        /*
        Set the Drawer's height and y position so that it does not cover your button
        */
        y: id_subOpenClose.height
        height: id_mainWindow.height - id_subOpenClose.height
        width: id_mainWindow.width

        // Do not dim background
        dim: false
        
        // Set this to zero if you want no shadow
        Material.elevation: 2
    
        edge: Qt.RightEdge
    
        Label {
            text: 'Hello World'
            anchors.centerIn: parent
        }
    }

    /* 
    This is your header button that was getting hidden
    Here it stays as if it were part of a global header and does not get hidden by
    the Drawer.
    */
    Button{
        id: id_subOpenClose
        text: id_subMenu1.visible? 'close': 'open'
        onClicked: id_subMenu1.visible? id_subMenu1.close(): id_subMenu1.open()
    }
}

Dla interaktywnego przykład WASM powyżej można znaleźć Tutaj.

2021-12-01 15:56:39

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................