2017-07-12 2 views
1

Ich möchte die Mindestbreite und -höhe meines QML-Anwendungsfensters festlegen, sodass das Inhaltselement vollständig sichtbar (nicht abgeschnitten) ist. HierQML ApplicationWindow: Mindestgröße für den Inhalt festlegen

import QtQuick 2.5 
import QtQuick.Controls 1.4 

ApplicationWindow { 
    visible: true 
    width: 100 
    height: 100 

    title: "test" 

    minimumWidth: circle.width 
    minimumHeight: circle.height // + menuBar.height 

    menuBar: MenuBar { 
     Menu { 
      title: qsTr("File") 
      MenuItem { 
       text: qsTr("Exit") 
       onTriggered: Qt.quit(); 
      } 
     } 
    } 

    Rectangle { 
     id: circle 
     anchors.centerIn: parent 
     width: 200 
     height: 200 
     color: "red" 
     radius: width * 0.5 
    } 
} 

ist das Ergebnis:

enter image description here

Wie Sie sehen können, das Setzen der minimalen Breite funktioniert. Die minimale Höhe scheint um die Höhe der Menüleiste zu liegen. Das Problem ist, dass etwas wie menuBar.height nicht funktioniert, da diese Eigenschaft nicht existiert.

Die Frage ist also: Wie kann ich die Größe des Application eingestellt, so dass der Inhalt Artikel (gegeben durch width/height oder implicitWidth/implicitHeight) nicht abgeschnitten wird?

Hinweis: In Wirklichkeit dient der Inhaltseintrag anstelle eines roten Kreises als Spielbereich, den ich dynamisch skalieren möchte.

Antwort

1

Wie immer bei der alten QtQuick.Controls 1.x ist die einzige Möglichkeit, sich zu helfen, die (undokumentierten/internen) Eigenschaften zu betrachten. Für die MenuBar das sind:

  • ObjektName
  • Menüs
  • __contentItem
  • __parentWindow
  • __isNative
  • Stil
  • __style
  • __menuBarComponent
  • objectNameChanged
  • menusChanged
  • nativeChanged
  • contentItemChanged
  • stylechanged
  • __styleChanged
  • __menuBarComponentChanged

__contentItem interessant zu sein scheint, und es verfügt über eine height - sobald es instanziiert wird. perfekt

minimumHeight: contentItem.childrenRect.height 
       + (menuBar.__contentItem ? menuBar.__contentItem.height : 0) 
+1

Works:

So können wir die Höhe des ApplicationWindow als solche definieren. Danke vielmals! – enkelwor

Verwandte Themen