Qt POŽIADAVKY Dať prvok nad Zásuvkou

0

Otázka

Som zápasí s veľmi základnú otázku..

Pomocou QT 5.15.2:

Máme jednoduchú aplikáciu s jedným hlavným oknom a 2-3 sub-window (1 úroveň dole z hlavnej). Hlavné okno sa skladá z položiek obsahu, hlavička a niektoré menu-klapky distribuované v hlavnom okne. Zatiaľ podstránky, ktoré boli otvorené, so zásuvkou prvok.

Avšak, zásuvka prekrytia klapky a hlavička po otvorení a potrebujeme, aby sme znovu instanciate klapky a hlavičky v šuplíku som to vidieť. To nie je naozaj pekné. Existuje nejaký spôsob, ako definovať z-úroveň, na ktorej zásuvke je otvorené? (zrejme nastavenie z nefunguje).


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

Najlepšiu odpoveď

0

Navrhoval by som, že Drawer nie je správne komponenty pre túto prácu, ako to je technicky Popup. To môže byť za prihlásenie sa na TabBar komponent miesto.

Avšak tu je re-písanie kódu tak, že Drawer otvorí bez vzťahujú na vaše id_subOpenClose tlačidlo.

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

Pre interaktívnu WASM príklad vyššie, pozri tu.

2021-12-01 15:56:39

V iných jazykoch

Táto stránka je v iných jazykoch

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