Qml ComboBox 与 Popup 中的 TextField
Qml ComboBox with TextField in Popup
我创建了一个自定义 ComboBox
,它在页脚中使用 ListView
和 TextField
,用于向 ComboBox
动态添加选项。
问题是,一旦弹出窗口失去焦点(因此当 TextField
获得焦点时),弹出窗口就会关闭。
我试图强制弹出窗口保持打开状态,这确实有效,但随后阻止 TextField
获得焦点(我猜是因为一旦调用 open()
弹出窗口就会重新获得焦点)。
ComboBox {
// ...
popup: Popup {
property bool forceOpen: false
onClosed: {
if(forceOpen)
open()
}
contentItem: ListView {
// ...
footer: TextField {
onPressed: forceOpen = true
}
}
}
}
我也尝试了 closePolicy
属性 和 Popup
的所有值,但其中 none 有帮助。
我正在使用 Qt5.11。 forceOpen
解决方案过去适用于 Qt 5.10,但不再适用。
如果您不接受对ComboBox
的关注,您的问题应该得到解决:
ComboBox {
focusPolicy: Qt.NoFocus
popup: Popup {
// ...
}
}
我创建了一个自定义 ComboBox
,它在页脚中使用 ListView
和 TextField
,用于向 ComboBox
动态添加选项。
问题是,一旦弹出窗口失去焦点(因此当 TextField
获得焦点时),弹出窗口就会关闭。
我试图强制弹出窗口保持打开状态,这确实有效,但随后阻止 TextField
获得焦点(我猜是因为一旦调用 open()
弹出窗口就会重新获得焦点)。
ComboBox {
// ...
popup: Popup {
property bool forceOpen: false
onClosed: {
if(forceOpen)
open()
}
contentItem: ListView {
// ...
footer: TextField {
onPressed: forceOpen = true
}
}
}
}
我也尝试了 closePolicy
属性 和 Popup
的所有值,但其中 none 有帮助。
我正在使用 Qt5.11。 forceOpen
解决方案过去适用于 Qt 5.10,但不再适用。
如果您不接受对ComboBox
的关注,您的问题应该得到解决:
ComboBox {
focusPolicy: Qt.NoFocus
popup: Popup {
// ...
}
}