Qt 从当前项目位置打开QML组合框下拉菜单
我在组合框中选择了一个项目。例如,项目的位置为300。如果我想从组合框中选择新元素。弹出窗口从一开始就显示。我想从当前项目位置弹出打开Qt 从当前项目位置打开QML组合框下拉菜单,qt,qml,qtquickcontrols2,Qt,Qml,Qtquickcontrols2,我在组合框中选择了一个项目。例如,项目的位置为300。如果我想从组合框中选择新元素。弹出窗口从一开始就显示。我想从当前项目位置弹出打开 ComboBox { id: control model: ["First", "Second", "Third","MERHABA","NASILSIN","SELAM","IYIMISIN","DOSTUM","SUAN","BIR","DENEME YAPILIYOR"] //wid
ComboBox {
id: control
model: ["First", "Second", "Third","MERHABA","NASILSIN","SELAM","IYIMISIN","DOSTUM","SUAN","BIR","DENEME YAPILIYOR"]
//width: 350
//font.pixelSize: 20
delegate: ItemDelegate {
width: 350
text: modelData
font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal
font.pixelSize: 30
highlighted: control.highlightedIndex == index
}
如果条件允许,
组合框
将按照您希望的方式工作,也就是说,如果您有足够的元素填充当前索引项之后的整个下拉列表,它将从该项而不是从开始显示
但是,stock组合框
似乎不允许您指定下拉列表的高度,因此它将占用比示例中多得多的元素。或者更高的元素
此外,如果当前索引是最后一个元素,您认为这将如何显示?列表将只显示最后一个元素加上一大堆零,这甚至是不可能的,最后一项不能从列表的末尾向上移动
如果你真的想要这种行为,你必须从头开始实现你自己的组合框元素。我也遇到过同样的问题,并且发现如果你打开弹出窗口,它就可以完美地工作:
ComboBox {
id: yearDropdown
model: yearModel
onActivated: updateVisibleDate()
popup: Popup {
id: comboPopup
clip: true
contentItem: ListView {
id: listView
implicitHeight: contentHeight
model: yearDropdown.popup.visible ? yearDropdown.delegateModel : null
onModelChanged: if(model) positionViewAtIndex(yearDropdown.currentIndex, ListView.Center);
ScrollIndicator.vertical: ScrollIndicator { }
}
onOpened: {
x = yearDropdown.x //Set the position you want
y = yearDropdown.y + yearDropdown.implicitHeight //Set the position you want
}
}
}
这是一个已经在Qt5.7.1中修复的bug:您尝试过Qt5.7.1或5.8.0吗?