qt - 弹出窗口中带有 TextField 的 Qml 组合框

标签 qt combobox popup qml qcombobox

我创建了一个自定义的ComboBox,它使用ListView和页脚中的TextField,用于动态地将选项添加到组合框。 问题是,一旦弹出窗口失去焦点(因此当 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 {
  focusPolicy: Qt.NoFocus
  popup: Popup {
    // ... 
  }
}

关于qt - 弹出窗口中带有 TextField 的 Qml 组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159560/

相关文章:

mysql - 使用qt的mysql 8的身份验证问题

c# - 从mysql数据库导入数据后去掉Combobox中的所有空值

java.lang.String 无法转换为 [Ljava.lang.Object;

c# - 组合框不会显示正确的项目

javascript - jQuery 弹出窗口不起作用 - 简单的自定义弹出窗口

c# - 如何在silverlight中弹出居中的PopUp控件

c++ - 在 3d 空间中的 QT 中围绕其 Y 轴旋转小部件

android - 使用 qt-android 获取通知

c++ - qFuzzyCompare 如何在 Qt 中工作

delphi - 如何显示一个像弹出菜单一样的窗口?