2016-12-28 3 views
0

У меня возникла проблема с поведением размера окна всплывающего окна с использованием Qt Quick Controls 2. Когда я помещаю ListView в качестве contentItem для всплывающего окна, размер окна всплывающего окна равен нулю. Некоторые примеры кода, которые воспроизводят проблему:Qt quick controls ListView size issue

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

Как сделать всплывающее окно размером с ListView?

+0

Что такое 'contentWidth' /' contentHeight'? – folibis

+0

Согласно документации: «Это свойство содержит ширину содержимого. Оно используется для вычисления общей неявной ширины всплывающего окна». –

+0

Если вы хотите, чтобы ваше всплывающее окно было такого же размера, как 'contentItem', просто ничего не делать. Согласно документам: «Если в всплывающем окне используется только один элемент, он изменит размер, чтобы он соответствовал неявному размеру его содержащегося элемента» – folibis

ответ

6

Вертикальный ListView не содержит ширины содержимого. Это всегда -1. Вам нужно будет указать что-то, например:

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

    contentItem: ListView { 
     implicitWidth: 200 // <== 
     implicitHeight: contentHeight 
     //... 
    } 
} 
Смежные вопросы