如何设置组合框宽度以适合最大的项目

2024-03-29

我希望我的ComboBox必须适应其width到最长的String Item我的清单中。

代码示例:

ComboBox {
    model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave,"Coconut" ]
}

知道如何做吗?


Quick-Controls-2 组合框(在撰写本文时为 Qt 5.9)中没有内置机制,因此您必须自己完成。像这样的东西...

main.qml

MyComboBox {
    id: comboBox1
    sizeToContents: false
    model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave", "Coconut" ]
}

MyComboBox {
    id: comboBox2
    anchors.top: comboBox1.bottom
    sizeToContents: true
    model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave", "Coconut" ]
}

我的组合框.qml

ComboBox {
    id: control

    property bool sizeToContents
    property int modelWidth

    width: (sizeToContents) ? modelWidth + 2*leftPadding + 2*rightPadding : implicitWidth

    delegate: ItemDelegate {
        width: control.width
        text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
        font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal
        font.family: control.font.family
        font.pointSize: control.font.pointSize
        highlighted: control.highlightedIndex === index
        hoverEnabled: control.hoverEnabled
    }

    TextMetrics {
        id: textMetrics
    }

    onModelChanged: {
        textMetrics.font = control.font
        for(var i = 0; i < model.length; i++){
            textMetrics.text = model[i]
            modelWidth = Math.max(textMetrics.width, modelWidth)
        }
    }
}

请注意,如果将模型类型从 QML List 更改为其他类型,例如 C++QStringList, QList<QObject*> or QAbstractListModel,那么你可能需要修改这一行textMetrics.text = model[i]以稍微不同的方式从模型项中检索文本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置组合框宽度以适合最大的项目 的相关文章

  • 如何向 QFileSystemModel 添加自定义角色

    我想向 QFileSystemModel 添加自定义角色 可能是派生模型 我想使用此角色来保存复选框的选中状态 该状态显示在自定义委托中的文件名旁边 如何才能做到这一点 我已经使用过使用示例Qt Quick Controls 文件系统浏览器
  • Delphi7,创建组合框项

    我想使用组合框为用户提供多种选项 所以有2个组合框 第一个大约有 5 个选项 第二个项目将根据用户在第一个组合框中选择的内容创建 到目前为止 我已经尝试过 Combobox2 Items Strings 1 xxxx 这让我出现这个错误 L
  • 想要在 dojo 中创建一个组合框,其中下拉菜单和自动完成功能仅在用户输入 4 个字符后才启动

    我想在 dojo 中创建一个组合框 其中下拉菜单和自动完成功能仅在用户输入 3 个字符后才会启动 当前的默认设置将开始显示下拉菜单 并在用户输入第一个字符时自动完成 是否有任何属性可以实现此行为 我可以重载某些函数吗 或者我应该自己编写一个
  • 子窗口中的 ListView 触发立即关闭,或在滚动时触发

    我有一个相当奇怪的场景 如果我启动一个包含ListView如果有一个中等复杂的委托和足够的项目来轻松超出可见区域 整个子窗口将在启动时立即关闭 降低委托的复杂性将允许窗口打开 但随后快速滚动窗口ListView会强行关闭它 This SSC
  • 如何使用带有数据绑定的 Ext5 组合框

    我想使用一个组合框 它从数据绑定接收预选值 并且还从同一存储的数据绑定接收可能的选项 面板项配置如下所示 xtype combobox name language default fieldLabel Default Language mu
  • ShaderEffectItem 的奇怪 alpha 混合结果

    我正在尝试使用以下方法在 QML 项目上应用简单的 alpha 蒙版ShaderEffectItem 这是一个最小的 非 工作示例 我有一个从红到白的渐变作为背景 并且想要在其顶部绘制一个绿色的 200x200 正方形 该正方形的 alph
  • 组合框 - 键入选择,然后单击焦点外 - 不会选择键入的项目

    我的组合框有问题 我有一个事件处理程序OnClick它根据选择的项目刷新数据 问题是当这种情况发生时 下拉组合框列出各种选项 在键盘上键入以查找匹配的项目 组合框更改此选择并调用OnClick event 由于此选择 事件 我的屏幕刷新 单
  • 如何控制 tkinter 组合框选择突出显示

    我写了一个小型法拉转换器来学习 GUI 编程 它效果很好 看起来不错 唯一的问题是我似乎不知道如何控制我的屏幕上出现的这种奇怪的突出显示ttk Combobox选择 我确实用过ttk Style 但它只改变了颜色ttk Combobox背景
  • QML 不显示 svg 图像

    我编写了一个简单的 QML ui 它使用一些 svg 图像 当我在桌面上执行该应用程序时 一切都很好 显示了 UI 以及上面的 svg 图像 当我尝试在嵌入式设备 运行嵌入式 Windows 上执行应用程序时 会出现问题 在这种情况下 会显
  • 在 Windows 上绘制主题组合框

    我尝试模仿主题不可编辑组合框的外观 CBS DROPDOWNLIST using DrawThemeBackground https msdn microsoft com library windows desktop bb773306 v
  • Qt、QML 和 Windows 8 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直对Qt框架引入的QML很好奇 但从未有机会使用它 但现在随着 Windows 8 的到来 基于旧式小部件的界面将变得过时 只是我
  • 部署 Qt Quick 演示应用程序 Minehunt 时出现全白屏幕

    为了测试部署过程 我尝试部署附带的演示应用程序 Minehunt 我能够让它运行 没有崩溃或错误 但屏幕是全白的 我相信这通常意味着我缺少插件 Dependency walker 报告没有问题 我什至尝试包含 Qt MingW 插件目录中的
  • Qt 在 ItemDelegate 之外访问模型数据

    我有一些继承的模型类QAbstractListModel VehiclesModel h class VehiclesModel public QAbstractListModel Q OBJECT public enum Roles Im
  • 选择组合框文本

    我有一个组合框声明如下
  • 使用 KDE Kirigami 时未找到 QML 模块

    所以我决定在我的应用程序中使用 KDE Kirigami UI 框架 所以我按照说明进行操作here https api kde org frameworks kirigami html index html 我将存储库克隆到我的应用程序目
  • 无法锚定到不是父级或同级 QML QtQuick 的项目

    我正在使用 QML 开发 python 桌面应用程序 我的 QML 文件中有这个 SplitView anchors fill parent orientation Qt Horizontal Rectangle color 272822
  • 什么时候应该首选 Loader 而不是 createQmlObject,反之亦然 - QML?

    两者都可以动态创建对象 什么时候应该Loader优先于Qt createQmlObjectQML 中反之亦然吗 The Loader可以被视为特定对象的占位符 它还使您能够通过Loader s id Qt createQmlObject通常
  • ExtJS EditorGridPanel 中的级联组合框

    我有一个正在运行的 EditorGrid 面板 其中两列有 ComboBox 编辑器 两个组合框都是从数据库远程加载的 countryStore and cityStore 我想限制cityComboBox仅显示所选国家 地区的城市 我需要
  • 我的 QSqlQueryModel 不在列表视图中显示数据

    我正在玩 QSqlQueryModel 但我现在完全陷入困境 我一整天都在寻找解决方案 但到目前为止还没有运气 我所做的工作是它从我的 sqlite 数据库中提取数据 但由于某种原因我无法在列表视图中显示它 我的角色名似乎不存在 对于我从数
  • ExtJS 4 用于选择所选值的组合框事件

    由于某种原因 我需要知道用户何时从组合框中选择了值 即使它已经被选择 仅当用户选择未选择的项目时 选择 事件才起作用 我在组合框或选择器的文档中没有看到任何类似 itemclick 的事件 有任何想法吗 ComboBox uses 绑定列表

随机推荐