2016-12-28 7 views
0

Ich habe ein Problem mit Popup-Fenstergröße Verhalten mit Qt Quick Controls 2. Wenn ich ListView als contentItem für Popup-Fenster setzen, ist Popup-Fenstergröße Null. Beispielcode, der das Problem reproduziert:Qt Quick-Steuerelemente ListView Größe Problem

import QtQuick 2.4 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.3 

ApplicationWindow { 
    id: window 
    visible: true 
    width: 800 
    height: 600 

    Button { 
     text: "open popup" 
     onClicked: popup.open() 
    } 

    Popup { 
     id: popup 
     x: (window.width - width)/2 
     y: window.height/6 
     width: contentWidth 
     height: contentHeight 

     contentItem: ListView { 
      width: contentWidth 
      height: contentHeight 
      model: ListModel { 
       ListElement { 
        name: "Apple" 
        cost: 2.45 
       } 
       ListElement { 
        name: "Orange" 
        cost: 3.25 
       } 
       ListElement { 
        name: "Banana" 
        cost: 1.95 
       } 
      } 

      delegate: RowLayout { 
       Label { 
        text: name 
       } 
       Label { 
        text: cost 
       } 
      } 
     } 
    } 
} 

Wie Popup auf die Größe von ListView zu übernehmen?

+0

Was ist 'contentWidth' /' contentHeight'? – folibis

+0

Gemäß der Dokumentation: "Diese Eigenschaft enthält die Breite des Inhalts. Es wird zur Berechnung der gesamten impliziten Breite des Popup verwendet." –

+0

Wenn Sie möchten, dass Ihr Popup-Fenster dieselbe Größe hat wie 'contentItem', tun Sie einfach nichts. Laut der Dokumentation: 'Wenn nur ein einzelnes Element in einem Popup verwendet wird, wird es an die implizite Größe des enthaltenen Elements angepasst. – folibis

Antwort

6

Eine vertikale ListView bietet keine Inhaltsbreite. Es ist immer -1. Sie müssen etwas angeben, zum Beispiel:

Popup { 
    id: popup 
    x: (window.width - width)/2 
    y: window.height/6 

    contentItem: ListView { 
     implicitWidth: 200 // <== 
     implicitHeight: contentHeight 
     //... 
    } 
}