2017-07-12 54 views
1

我想設置我的QML應用程序窗口的最小寬度和高度,以便內容項完全可見(未剪裁)。QML ApplicationWindow:設置最小尺寸以適合內容

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

下面是結果:

enter image description here

正如你所看到的,設置的最小寬度正常工作。最小高度似乎與菜單欄的高度有關。問題是,像menuBar.height這樣的東西不起作用,因爲這個屬性不存在。

所以,問題是:我怎麼設置ApplicationWindow的大小,從而使內容項(由width/heightimplicitWidth/implicitHeight給出)不會被截斷?

注意:實際上,內容項目不是一個紅色圓圈,而是一個遊戲畫布,我想動態調整大小。

回答

1

與往常一樣,舊的QtQuick.Controls 1.x唯一可以幫助自己的方法是查看(無證/內部)屬性。對於MenuBar這些都是:

  • 對象名
  • 菜單
  • __contentItem
  • __parentWindow
  • __isNative
  • 風格
  • __style
  • __menuBarComponent
  • objectNameChanged
  • menusChanged
  • nativeChanged
  • contentItemChanged
  • 覆蓋styleChanged
  • __styleChanged
  • __menuBarComponentChanged

__contentItem似乎是有趣,它的特點是height - 只要它被實例化。完美

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

作品:

因此,我們可以定義ApplicationWindow的高度本身。非常感謝! – enkelwor