问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

qml ComboBox详解

创作时间:
作者:
@小白创作中心

qml ComboBox详解

引用
CSDN
1.
https://m.blog.csdn.net/ckg3824278/article/details/145550158

ComboBox是Qt Quick Controls中的一个用户界面组件,它结合了按钮和弹出列表的特点,提供了一种节省空间的方式来展示选项列表。用户可以从下拉列表中选择一个项目,适用于需要用户从一系列预定义选项中进行选择的场景。

重要属性

ComboBox拥有多个重要属性,用于配置其行为和外观,以下是一些关键属性:

  • model:定义ComboBox中可用的选项集合。它可以是JavaScript数组、ListModel或其他类型的数据模型。
  • currentIndex:保存ComboBox中当前项的索引。只读属性,当count为0时默认值为-1,否则默认值为0。
  • currentText:当前项的文本。只读属性。
  • displayText:保存在ComboBox按钮上显示的文本。默认情况下,显示当前选择项的文本,但可以使用自定义值覆盖。
  • editable:控制ComboBox是否可编辑。默认值为false。
  • flat:控制ComboBox按钮是否平坦。默认值为false,除非与之交互,否则扁平ComboBox按钮不会绘制背景。
  • popup:包含弹出窗口。可以自定义下拉列表的样式和行为。
  • textRole:表示用于填充ComboBox的模型角色。当模型有多个角色时,可以设置textRole来确定应该显示哪个角色。
  • validator:可编辑ComboBox的输入文本验证器。当设置了验证器时,文本字段将只接受使文本属性处于中间状态的输入。

重要方法

ComboBox提供了一些方法用于操作其项和视图,以下是一些关键方法:

  • decrementCurrentIndex():如果弹出列表可见,则递减ComboBox的当前索引或突出显示的索引。
  • find(string text, flags):返回指定文本的索引,如果未找到匹配项,则返回-1。
  • incrementCurrentIndex():如果弹出列表可见,则增加ComboBox的当前索引或突出显示的索引。
  • selectAll():选择ComboBox的可编辑文本字段中的所有文本。
  • textAt(int index):返回指定索引的文本,如果索引超出范围,则返回空字符串。

重要信号

ComboBox发出信号以响应用户交互和状态变化,以下是一些关键信号:

  • activated(int index):在用户从下拉列表中选择(或激活)一个项目时发出。这个信号通常用于在用户选择一个项目时执行某些操作。
  • currentIndexChanged(int index):在ComboBox的当前选中项索引改变时发出。这个信号通常用于在当前索引变化时更新与ComboBox相关的其他界面元素或执行某些操作。
  • highlighted(int index):当弹出列表中索引处的项目被用户突出显示时发出。

示例代码

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("ComboBox Example")
    ComboBox {
        editable: true
        model: ListModel {
            id: model
            ListElement { text: "Banana" }
            ListElement { text: "Apple" }
            ListElement { text: "Coconut" }
        }
        onAccepted: {
            if (find(editText) === -1)
                model.append({text: editText})
        }
        onCurrentIndexChanged: {
            console.log(currentIndex)
        }
        onCurrentTextChanged: {
            console.log(currentText)
        }
    }
}


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号