2016-12-28 1 views
0

J'ai un problème avec le comportement de la taille de la fenêtre contextuelle à l'aide de Qt Quick Controls 2. Lorsque je place ListView en tant qu'élément contentItem pour une fenêtre contextuelle, la taille de la fenêtre contextuelle est zéro. Un exemple de code qui reproduit le problème:Qt contrôles rapides Problème de taille ListView

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

Comment faire pour adopter la taille de ListView?

+0

Qu'est-ce que 'contentWidth' /' contentHeight'? – folibis

+0

Selon la documentation: "Cette propriété contient la largeur du contenu, elle est utilisée pour calculer la largeur implicite totale du Popup." –

+0

Si vous voulez que votre fenêtre popup soit de la même taille que 'contentItem', ne faites rien. Selon les docs: 'Si un seul élément est utilisé dans un popup, il sera redimensionné pour s'adapter à la taille implicite de son élément contenu» – folibis

Répondre

6

La verticale ListView n'offre pas de largeur de contenu. C'est toujours -1. Vous devrez spécifier quelque chose, par exemple:

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

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