HusSelect 选择器

August 13, 2026 · View on GitHub

← 返回主目录

← 返回本类别目录

HusSelect 选择器

下拉选择器。


支持的代理:

  • indicatorDelegate: Component 右侧指示器代理

  • toolTipDelegate: Component 文本提示代理,代理可访问属性:

    • index: int 选项数据索引

    • model: var 选项数据

    • pressed: bool 是否按下

    • hovered: bool 是否悬浮


支持的属性:

属性名类型默认值描述
animationEnabledboolHusTheme.animationEnabled是否开启动画
activebool-是否处于激活状态
hoverCursorShapeenumQt.PointingHandCursor悬浮时鼠标形状(来自 Qt.*Cursor)
clearEnabledbooltrue是否启用清除按钮
clearIconSourceint丨stringHusIcon.CloseCircleFilled清除图标源(来自 HusIcon)或图标链接
showToolTipboolfalse是否显示文字提示
loadingboolfalse是否在加载中
placeholderTextstring''占位符文本
defaultPopupMaxHeightint240默认弹窗最大高度
colorTextcolor-文本颜色
colorBgcolor-背景颜色
radiusBgHusRadius-背景圆角
radiusItemBgHusRadius-选项背景圆角
radiusPopupBgHusRadius-弹窗背景圆角
borderBgHusBorder-背景边框
sizeHintstring'normal'尺寸提示
contentDescriptionstring''内容描述(提高可用性)

模型{model}支持的属性:

属性名类型可选/必选描述
labelstring必选本选择项的标签
valuevar可选本选择项的值
enabledbool可选本选择项是否启用

支持的信号:

  • clickClear() 点击清除图标时发出

代码演示

示例 1

通过 editable 属性设置是否可编辑。

通过 model 属性设置初始选择器的模型,选择项支持的属性:

  • { label: 本选择项的标签 } 可通过 textRole 更改

  • { value: 本选择项的值 } 可通过 valueRole 更改

  • { enabled: 本选择项是否启用 }

通过 loading 属性设置是否在加载中。

可以让 enabled 绑定 loading 实现加载完成才启用。

通过 showToolTip 属性设置是否显示文字提示框(主要用于长文本)。

通过 defaultPopupMaxHeight 属性设置默认弹出窗口的高度。

import QtQuick
import HuskarUI.Basic

Column {
    spacing: 10

    HusRadioBlock {
        id: editableRadio
        initCheckedIndex: 0
        model: [
            { label: 'Noeditable', value: false },
            { label: 'Editable', value: true },
        ]
    }

    HusRadioBlock {
        id: sizeHintRadio
        initCheckedIndex: 1
        model: [
            { label: 'Small', value: 'small' },
            { label: 'Normal', value: 'normal' },
            { label: 'Large', value: 'large' },
        ]
    }

    Row {
        spacing: 10

        HusSelect {
            width: 120
            sizeHint: sizeHintRadio.currentCheckedValue
            editable: editableRadio.currentCheckedValue
            showToolTip: true
            model: [
                { value: 'jack', label: 'Jack' },
                { value: 'lucy', label: 'Lucy' },
                { value: 'yiminghe', label: 'Yimingheabcdef' },
                { value: 'disabled', label: 'Disabled', enabled: false },
            ]
        }

        HusSelect {
            width: 120
            sizeHint: sizeHintRadio.currentCheckedValue
            editable: editableRadio.currentCheckedValue
            enabled: false
            model: [
                { value: 'jack', label: 'Jack' },
                { value: 'lucy', label: 'Lucy' },
                { value: 'yiminghe', label: 'Yiminghe' },
                { value: 'disabled', label: 'Disabled', enabled: false },
            ]
        }

        HusSelect {
            width: 120
            sizeHint: sizeHintRadio.currentCheckedValue
            editable: editableRadio.currentCheckedValue
            loading: true
            model: [
                { value: 'jack', label: 'Jack' },
                { value: 'lucy', label: 'Lucy' },
                { value: 'yiminghe', label: 'Yiminghe' },
                { value: 'disabled', label: 'Disabled', enabled: false },
            ]
        }
    }
}