可滚动页面的QT高度问题

可滚动页面的QT高度问题,qt,menu,qml,drawer,Qt,Menu,Qml,Drawer,我正在尝试定制Qt抽屉菜单()。 我所做的主要更改是将窗格块替换为独立视图项目列表: StackView { id:homeView anchors.fill: parent initialItem:ProjectsList{ } } } ProjectList.qml: import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import QtQuick.Co

我正在尝试定制Qt抽屉菜单()。 我所做的主要更改是将窗格块替换为独立视图项目列表:

StackView {
    id:homeView
    anchors.fill: parent

    initialItem:ProjectsList{
    }
    }
}
ProjectList.qml:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Controls.Material 2.0

ScrollablePage {
    id:projectsListPage

    ListView {
        id: listView2
        anchors.fill: parent

        delegate: ItemDelegate {
            width: parent.width
            text: model.title
        }

        model: ListModel {
            ListElement { title: qsTr("2Projects list2j") }
            ListElement { title: qsTr("Projects liste") }
            ListElement { title: qsTr("Projects listr") }
            ListElement { title: qsTr("Projects list3") }
        }

    }
}
不幸的是,我只能看到列表中的一行,其他行是隐藏的,但我可以滚动它。请帮助我,按ScrollView填充整个页面(高度属性无效:()

可滚动页面:

import QtQuick 2.7
import QtQuick.Controls 2.0

Page {
    id: page

    default property alias content: pane.contentItem

    Flickable {
        anchors.fill: parent
        contentHeight: pane.implicitHeight
        flickableDirection: Flickable.AutoFlickIfNeeded

        Pane {
            id: pane
            width: parent.width
        }

        ScrollIndicator.vertical: ScrollIndicator { }
    }
}

首先:
ListView
本身是一个
Flickable
,因此它本身是可滚动的。现在,您将
Flickable
打包在一个
Flickable
中,这似乎既不必要又有问题

滚动页面中的外部
Flickable
的大小由
窗格的
高度决定,而
窗格的高度由
列表视图的大小决定,即0。因此很明显,这是不可行的。
您可以将
ListView
的高度设置为自己的
contentItem.height
,这样可以工作,但是您已经加载了所有元素,并且不再从动态创建和销毁中获益

如果我没弄错的话,您希望页面的大小与需要的一样大,但最大大小为
StackView
的父级

我建议不要使用你的
滚动页面
,而是使用一个普通的
页面
,直接将
列表视图
打包在那里。让
列表视图
填充
页面
,并将
页面.implicitHeight
设置为
Math.max(parent.height,ListView.contentItem.height)
或类似的内容


您必须为
列表视图设置一个大小,因为它没有提供有意义的隐式大小!!!

您的列表视图将尝试根据
锚点填充父项。fill:parent
指令,但是
项目列表页面
没有定义大小,并且我不确定
堆栈中的
initialItem
View
将为您的
ProjectsList
实例提供正确的维度。此外,您的
StackView
代码中有额外的父级,并且ProjectsList元素的qml文件具有不同的名称:ProjectList.qml,如果您没有使用带有路径和元素名称定义的
qmldir
,则这些名称应该相同。您可以
可滚动页面的代码如何?我想你的问题在于你的修改。德米特里,谢谢,但我的目标是用当前页面的内容填充整个区域,所以我无法设置元素的大小。至于命名,是的,这是我的错别字,对不起。德姆,谢谢,当然,我已经把它附加到问题上了。Thnx太多了,它这是我的错。我刚刚删除了可滚动页面,它正在工作!我很笨…我按照他们的例子,认为它是抽屉菜单的重要部分,从来没有想过我必须删除它…我应该更仔细地阅读Quick element的手册。