Qml ComboBox在弹出窗口中带有TextField

时间:2018-11-05 17:46:38

标签: qt combobox popup qml qcombobox

我创建了一个自定义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的{​​{1}}属性的所有值,但没有一个起作用。

我正在使用 Qt5.11 Popup解决方案曾经与Qt 5.10一起使用,但现在不再使用。

1 个答案:

答案 0 :(得分:2)

如果您不关注ComboBox,应该解决您的问题:

ComboBox {
  focusPolicy: Qt.NoFocus
  popup: Popup {
    // ... 
  }
}