如何使组合框在QML中默认打开

How to make ComboBox to be open by default in QML

我正在使用 Qt 5.7 和 QtQuick.Controls 2.0。我想让我的 ComboBox 默认打开。为此,我只是将 popup.visible 设置为 true,但不幸的是,我在控制台中收到以下错误:QML Popup: cannot find any window to open popup in.。单击我的 ComboBox 可以很好地打开和关闭它,没有任何错误消息。我什至尝试执行 Component.onCompleted: _popup.open(),其中 _popup 是我的 ComboBox 中 Popup 组件的 id,但出现相同的错误消息。

编辑 1(添加一个简单示例):

ApplicationWindow {
  width: 200
  height: 200

  Item {
    anchor.fill: parent

    ComboBox {
      popup.visible: true
      model: ["First", "Second", "Third"]
    }
  }

更新到 Qt 5.7.1 解决了我的问题,感谢@BaCaRoZzo 的建议!

编辑 1:

作为旁注,我想补充一点,如果您收到消息 QML Popup: cannot find any window to open popup in.,也可能是因为 Popup 组件找不到它的父级。例如,如果 Popup 是在 StateMachine 的 State 中创建的,就会发生这种情况。在这种情况下,您必须显式设置 Popup!

parent 属性