Qt 当listview的委托超出范围时,Qml组合框未关闭

Qt 当listview的委托超出范围时,Qml组合框未关闭,qt,combobox,qml,Qt,Combobox,Qml,我为包含组合框的listview创建了一个委托。如果我打开组合框并滚动列表视图,则组合框弹出窗口会随着代理位置移动,这没关系。但是,当代理离开listview区域(参考所附的示例图像)时,组合框弹出窗口将继续移动到listview区域之外 当相应的代理离开listview区域时,如何关闭组合框 先谢谢你 代码在这里 import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.2 Window { visi

我为包含组合框的listview创建了一个委托。如果我打开组合框并滚动列表视图,则组合框弹出窗口会随着代理位置移动,这没关系。但是,当代理离开listview区域(参考所附的示例图像)时,组合框弹出窗口将继续移动到listview区域之外

当相应的代理离开listview区域时,如何关闭组合框

先谢谢你

代码在这里

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Column {
        spacing: 0
        anchors.fill: parent
        Item {
            width: parent.width
            height: parent.height * 0.4
            Image {
                anchors.fill: parent
                anchors.margins: 10
                source: "https://lh4.googleusercontent.com/proxy/cITVCAj9KJ5Hfwd5iuNDhzdB2pSrMQv2rzTl-vvg23Ifhe2qdCisZBG-MzV35y_r2zijC9X4QOpda9eHzr_hA"
            }
        }
        ListView {
            width: parent.width
            height: parent.height * 0.7
            model: 10
            spacing: 5
            clip: true
            delegate: Rectangle {
                width: parent.width
                height: 50
                color: index % 2 == 0 ? "lightsteelblue" : "steelblue"
                Row {
                    spacing: 25
                    anchors.centerIn: parent
                    Label {
                        text: qsTr("%1").arg(index)
                        anchors.verticalCenter: parent.verticalCenter
                    }
                    ComboBox {
                        anchors.verticalCenter: parent.verticalCenter
                        model: ["a", "b", "c"]
                    }
                }
            }
        }
    }
} 

如果滚动时没有特定的目标来保持
组合框
弹出窗口处于打开状态,则将以下属性添加到
列表视图

highlightRangeMode: ListView.StrictlyEnforceRange
当滚动
列表视图时,这将关闭
组合框
弹出窗口

附言

另外,使用
组合框
列表退出视图区域来解决您的问题

在其他列表项下隐藏
标题
元素的问题上更新


根据说明
ListView.StrictlyEnforceRange-高亮显示不会超出范围。如果键盘或鼠标操作会导致突出显示超出范围,则当前项目会更改。
当项目超出范围时,列表会更改下一个项目,从而使组合框关闭其弹出窗口,但由于标题项目位于其他
列表视图
项目的下方(参见本段,委托始终位于标题上方)无法在其他项的顶部显示默认标题。我建议您在列表之外实现自己的标题。抱歉,我可能不知道找到其他解决方案有多好。

Hey!当按下组合框
外的区域时,是否可以将项的焦点更改为
false
ed正在我的桌面上复制您的问题,但当我在别处单击鼠标时,它会自动关闭
组合框
(我使用的是
导入QtQuick.Controls 2.2
组合框,而不是您的导入语句。如果我们单击组合框外部,它将被隐藏。但是如果我们将鼠标指针移到组合框弹出窗口外部,并尝试滚动鼠标滚轮,列表视图将开始移动,这就是上述问题发生的原因。Hi@user3417815,Th谢谢你的回答。我试过了,它按预期工作。但是在启用highlightRangeMode后,listview内容高度超过了正常模式,我们无法看到listview标题项。这两个属性之间有关系吗?@Ramkumar hi,不确定为什么会这样。我会再次检查。我想这样做因此,尝试使用我自己的标题组件,而不是使用Listview的默认组件,它可以工作。感谢您的时间。