----- ComboBox -----


https://doc.qt.io/qt-6.9/zh/qml-qtquick-controls-combobox.html

 属性 
import QtQuick
import QtQuick.Controls
    
ComboBox {
    //控件背景与控件边界之间的填充
    delegate: Component
        //弹出窗口中显示项目的委托
        //建议使用 ItemDelegate(或任何其他AbstractButton 衍生工具)作为委托
    displayText: string
        //当前项的文本
        //可与 currentText 组合,即固定值 + 可变值
        //displayText: "Size: " + currentText
        //model: ["S", "M", "L"]
        //显示 Size: M
        //editable 需设置为 false
    down: bool
        //按钮是否向下显示,即显示是否按下,默认:false
    editText: string
        //可编辑组合框文本字段中的文本
    editable: bool
        //是否可编辑,默认:false
    flat: bool  //按钮是否为平面(不会绘制背景),默认:false
    
    //控制如何计算ComboBox 的implicitContentWidth
    //此属性只影响ComboBox 的implicitWidth ,因此设置显式width 仍会导致误码
    implicitContentWidthPolicy: enumeration
        implicitContentWidthPolicy: ContentItemImplicitWidth
            //implicitContentWidth 将默认为contentItem 的值(默认)
            //这是最有效的选项,因为不会进行额外的文本布局
        implicitContentWidthPolicy: WidestText
            //每次模型改变时,implicitContentWidth 都会设置为给定textRole 的最大文本的隐含宽度
            //该选项应在较小的模型中使用
        implicitContentWidthPolicy: WidestTextWhenCompleted
            //在component completion 后,implicitContentWidth 将被设置为给定textRole 的最大文本的隐含宽度
            //该选项应在较小的模型中使用
    
    indicator: Item
        //下拉指示符项(自定义用)
    
    //为输入法提供有关组合框预期内容及其操作方式的提示
    inputMethodHints: enumeration
        inputMethodHints: Qt.ImhHiddenText
            //字符应被隐藏,通常用于输入密码
        inputMethodHints: Qt.ImhSensitiveData
            //输入的文本不应由 Active 输入法存储在任何持久性存储中,如预测用户字典
        inputMethodHints: Qt.ImhNoAutoUppercase
            //输入法不应尝试在句子结束时自动切换到大写字母
        inputMethodHints: Qt.ImhPreferNumbers
            //数字是首选(但不是必需)
        inputMethodHints: Qt.ImhPreferUppercase
            //首选大写字母(但不是必需)
        inputMethodHints: Qt.ImhPreferLowercase
            //首选小写字母(但不是必需)
        inputMethodHints: Qt.ImhNoPredictiveText
            //输入时不使用预测文本(即字典查询)
        inputMethodHints: Qt.ImhDate
            //文本编辑器具有日期字段的功能
        inputMethodHints: Qt.ImhTime
            //文本编辑器作为时间字段运行
        inputMethodHints: Qt.ImhDigitsOnly
            //只允许输入数字
        inputMethodHints: Qt.ImhFormattedNumbersOnly
            //只允许输入数字。包括小数点和减号
        inputMethodHints: Qt.ImhUppercaseOnly
            //只允许输入大写字母
        inputMethodHints: Qt.ImhLowercaseOnly
            //只允许小写字母输入
        inputMethodHints: Qt.ImhDialableCharactersOnly
            //只允许输入适合电话拨号的字符
        inputMethodHints: Qt.ImhEmailCharactersOnly
            //只允许输入适合电子邮件地址的字符
        inputMethodHints: Qt.ImhUrlCharactersOnly
            //只允许使用适合 URL 的字符
    
    model: model  //提供数据的模型
    popup: Popup  //弹出窗口
        //提供数据的模型
    selectTextByMouse: bool
        //是否可以用鼠标选择可编辑ComboBox 的文本字段
    textRole: string
        //填充组合框的模型角色
        //当模型有多个角色时,可设置textRole 以确定应显示哪个角色
    validator: Validator
        //可编辑组合框的输入文本验证器
        //只有当按下Return 或Enter 键时文本处于可接受状态,才会发出accepted 信号
        //目前支持的验证器有IntValidator 、DoubleValidator 和RegularExpressionValidator
    valueRole: string
        //该属性持有模型角色,用于存储与模型中每个项目相关的值
}


 只读属性 
import QtQuick
import QtQuick.Controls
    
ComboBox {
    acceptableInput: bool
        //可编辑文本字段中是否包含可接受的文本
    count: int  //组合框中的项目数
    currentIndex: int  //当前项目的索引
    currentText: string  //当前项目的文本
    currentValue: var  //当前项目的值
    delegateModel: model  //提供委托实例的模型
    highlightedIndex: int  //高亮显示项的索引
    implicitIndicatorWidth(Height): real  //隐式指示器宽/高度
    inputMethodComposing: bool
        //可编辑的组合框是否有来自输入法的部分文本输入
    pressed: bool
        //按钮是否被按下,按钮可通过触摸或按键事件按下
}


 信号 
import QtQuick
import QtQuick.Controls
    
ComboBox {
    void accepted()
    onAccepted: {
        //在editable 组合框上按下Return 或Enter 键时发出
        //如果在组合框上设置了validator ,则只有在输入处于可接受状态时才会发出信号
    }
    
    void activated(int index)
    onActivated: {
        //当index 上的项目被用户激活时,将发出该信号
    }
    
    void highlighted(int index)
    onHighlighted: {
        //当用户高亮显示弹出列表中index 处的项目时,将发出该信号
        //高亮信号仅在弹出窗口打开且项目被高亮时发出,但不一定是activated
    }
    
}


 方法 
import QtQuick
import QtQuick.Controls
    
ComboBox {
    void decrementCurrentIndex();
        //减小组合框的当前索引
        //如果弹出列表可见,则减小高亮显示的索引
    int find(string text, enumeration flags);
        //返回指定text 的索引,如果未找到匹配项,则返回-1
        //该函数只能在Component.completed() 发送ComboBox 后使用
        find(string text, Qt.MatchExactly);
            //搜索词完全匹配(默认)
        find(string text, Qt.MatchRegularExpression);
            //搜索词以正则表达式匹配
        find(string text, Qt.MatchWildcard);
            //使用通配符匹配搜索词
        find(string text, Qt.MatchFixedString);
            //搜索词以固定字符串形式匹配
        find(string text, Qt.MatchStartsWith);
            //搜索词匹配项目的开始
        find(string text, Qt.MatchEndsWith);
            //搜索词匹配项目的结尾
        find(string text, Qt.MatchContains);
            //搜索词包含在项目中
        find(string text, Qt.MatchCaseSensitive);
            //搜索区分大小写
    void incrementCurrentIndex();
        //递增组合框的当前索引,如果弹出列表可见,则递增高亮显示的索引
    int indexOfValue(object value);
        //返回指定value 的索引,如果没有找到匹配,则返回-1
        //该函数只能在Component.completed() 发出ComboBox 后使用
    void selectAll();
        //选择组合框可编辑文本字段中的所有文本
    string textAt(int index);
        //返回指定index 的文本,如果索引超出范围,则返回空字符串
        //该函数只能在Component.completed() 发出ComboBox 后使用
    void valueAt(int index);
        //返回组合框中index 位置的值
    }
    
}


 自定义 
import QtQuick
import QtQuick.Controls
    
ComboBox {
    background: Item {
        //背景
    }
    delegate: Component {
        //项目的委托
    }
    contentItem: Item {
        //可视化内容项目
    }
    popup: Popup {
        //弹窗
    }
    indicator: Item {
        //下拉指示器
    }
}