QML布局的高度不正确

时间:2016-06-15 13:19:49

标签: qt qml

我有一个qml布局,并且ApplicationWindow没有伸展到正确的高度以便滚动工作。

这是我的代码:

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.LocalStorage 2.0
import QtQuick.Window 2.0
import "db.js" as DB

ApplicationWindow {
    id: root
    visible: true
    width: Screen.width
    title: "Nákupy"

    menuBar: MenuBar {

        Menu {
            title: "Smazat"
            MenuItem {
                text: "&Smazat seznam"
                onTriggered: {
                    console.log("Open action triggered");
                }
            }
        }
    }

    Flickable {
        id: flickable
        anchors.fill: parent
        contentHeight: column.height
        contentWidth: root.width

        Column {
            anchors.fill: parent
            id: column

            Label {
                id: welcometext
                text: "Test"
                horizontalAlignment: Text.AlignHCenter
                y: 10
                anchors.margins: 10
                width: root.width
            }

            Repeater {
                y: welcometext.top + welcometext.height + 10
                id: repeater
                model: lmodel
                Button {
                    id: b
                    text: m_text
                    x: 20
                    width: root.width - 40
                    height: 70
                    onClicked: {
                        visible = false;
                    }
                }
            }

            Button {
                y: repeater.top + repeater.height + 30
                width: root.width
                text: "Přidat položku"
                onClicked: {
                    console.log("clicked")
                }
            }

        }
    }

    ListModel {
        id: lmodel
    }

    Component.onCompleted: {
        DB.open().transaction(function(tx){
            tx.executeSql("CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY, name TEXT, done INTEGER)");
        });
        console.log(column.height);
        for(var i = 0; i < 10; i++) {
            lmodel.append({m_text: "Test "+i});
        }
        console.log(column.height);
        console.log(welcometext.height);
    }

}

列报告高度为0.

1 个答案:

答案 0 :(得分:0)

尝试使用implicitHeight

  

如果未指定宽度或高度,则定义Item的自然宽度或高度。

     

大多数项目的默认隐式大小为0x0,但有些项目具有固有的隐式大小,无法覆盖[...]

     

设置隐式大小对于根据内容[...]

定义具有首选大小的组件非常有用