Qt 当listview的委托超出范围时,Qml组合框未关闭
我为包含组合框的listview创建了一个委托。如果我打开组合框并滚动列表视图,则组合框弹出窗口会随着代理位置移动,这没关系。但是,当代理离开listview区域(参考所附的示例图像)时,组合框弹出窗口将继续移动到listview区域之外 当相应的代理离开listview区域时,如何关闭组合框 先谢谢你 代码在这里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
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的默认组件,它可以工作。感谢您的时间。