【问题标题】:Qml ComboBox with TextField in Popup弹出窗口中带有 TextField 的 Qml ComboBox
【发布时间】:2018-11-05 17:46:38
【问题描述】:

我创建了一个自定义ComboBox,它在页脚中使用ListViewTextField,用于向ComboBox 动态添加选项。 问题是,一旦弹出窗口失去焦点(所以当TextField 获得焦点时),弹出窗口就会关闭。 我试图强制弹出窗口保持打开状态,这确实有效,但随后阻止了 TextField 接收焦点(我猜是因为一旦调用 open(),弹出窗口就会重新获得焦点)。

ComboBox {
  // ...
  popup: Popup {
    property bool forceOpen: false
    onClosed: {
      if(forceOpen)
        open()
    }

    contentItem: ListView {
      // ...
      footer: TextField {
        onPressed: forceOpen = true
      }
    }
  }
}

我还尝试了 PopupclosePolicy 属性的所有值,但都没有帮助。

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

【问题讨论】:

  • 这可能是一个奇怪的问题,但为什么不使用ComboBox 而不是创建自定义的呢?
  • 当然,我使用的是普通的 ComboBox,我编辑了条目。

标签: qt combobox popup qml qcombobox


【解决方案1】:

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

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

【讨论】:

  • 太棒了,这确实解决了问题。它甚至不需要使用 forceOpen 属性的混乱解决方法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2012-11-24
相关资源
最近更新 更多