49.QComboBox

是一个组合控件

是一个文本框带一个下拉选择框

继承QWeight

长这样

目录

1  构造函数

2  数据操作

2.1  添加条目项

2.1.1  添加纯字符条目 additem(str,userData)

2.1.2  添加字符与图标混合条目 addItem(QIcon,str,userData)

2.2  添加批量纯字符条目 addItems(Iterable[str])

2.3  插入条目项

2.3.1  插入纯字符条目 insertitem(int,str,userData)

2.3.2  插入字符与图标混合条目 insertitem(int,QIcon,str,userData)

2.3.3  插入批量纯字符条目 insertitems(int,iterable[str]))

2.4  设置条目项

2.4.1  设置指定条目图标 setItemIcon(int,QIcon)

2.4.2  设置指定条目内容 setItemText(int,str)

2.4.3  插入用户数据 setItemData(int,userDate,int(which user))

2.5  删除指定的条目项 removeItem()

2.6  插分割线 insertSeparator()

2.7  设置当前文本

2.7.1  设置指定位数条目作为当前文本 setCurrentIndex()

2.7.2  设置条目中的字符串为当前文本 setCurrentText(str)

2.7.3  设置任意字符串为当前文本 setEditText(str)

3  模型操作

4  视图操作

5  代理设置

6  数据获取

6.1  获取条目个数 count()

6.2  获取指定条目图标对象 itemIcon(int)

6.3  获取指定条目的内容 itemText()

6.4  获取指定条目的用户数据 itemData(int)

6.5  获取当前数据的索引 currentIndex()

6.6  获取当前数据的内容 currentText()

7  数据限制

7.1  最大条目数

7.1.1  设置 setMaxCount()

7.1.2  获取 maxCount()

7.2  最大显示条目数

7.2.1  获取 maxVisbleItems()

7.2.2  设置 setMaxVisibleItems()

8  常规操作

8.1  可编辑

8.1.1  设置 setEditable()

8.1.2  获取 isEditable()

8.2  条目可重复

8.2.1  设置 setDuplicatesEnabled()

8.2.2  获取 duplicatesEnabled()

8.3  有框架

8.3.1  设置 setFrame()

8.3.2  获取 hasFrame()

8.4  图标尺寸

8.4.1  设置 setIconSize()

8.4.2  获取 iconSize()

8.5  清空

8.5.1  清空所有条目 clear()

8.5.2  清空正在编辑的内容 clearEditText()

8.6  弹出 showPopup()

8.7  完成器

8.7.1  设置 setCompleter()

8.7.2  获取 completer()

8.8  验证器

8.8.1  设置 setValidator()

8.8.2  获取 validator()

9  尺寸调整策略

9.1  设置 setSizeAdjustPolicy()

9.1.1  QComboBox.AdjustToContents 根据最长内容进行调整

9.1.2  QComboBox.AdjustToContentsOnFirstShow 根据第一次显示的内容进行调整(默认值)

9.1.3  最小长度

9.1.4  QComboBox.AdjustToMinimumContentsLength 根据最小长度内容进行调整

9.1.5  QComboBox.AdjustToMinimumContentsLengthWithIcon 根据带图标的最小长度进行调整

9.2  获取尺寸政策 sizeAdjustPolicy()

10  信号

10.1  任意条目被选中时触发 activated 会传递一个int

10.2  任意条目被选中时触发 activated[str] 会传递一个str

10.3  选中的索引发生改变时 currentIndexChanged() 会传递一个int

10.4  选中的索引发生改变时 currentIndexChanged[str] 会传递一个str

10.5  当前文本内容发生改变 currentTextChanged 会传递一个str

10.6  编辑的文本发生改变时 editTextChanged 会传递一个str

10.7  移动到下拉菜单任意条目触发 highlighted 会传递一个Int

10.8  移动到下拉菜单任意条目触发 highlighted[str] 会传递一个str


1  构造函数

此时创建了一个空的QComboBox

点击下按钮不会出现下拉菜单

2  数据操作

以下使用的userData并非显示在界面中的数据,而是可以传递的数据,可以为任何变量类型

当然也可以不加userData,不加userData默认userData为None

2.1  添加条目项

2.1.1  添加纯字符条目 additem(str,userData)

运行结果

点击下拉菜单后可展示添加的条目项

2.1.2  添加字符与图标混合条目 addItem(QIcon,str,userData)

点击下拉菜单后可展示条目项

2.2  添加批量纯字符条目 addItems(Iterable[str])

参数为可迭代的str对象就行

点击下拉菜单可以查看所有的条目

2.3  插入条目项

我们插入条目项中,第一个参数是插入后该条目所在的位置

我们使用刚刚创建的所有条目

2.3.1  插入纯字符条目 insertitem(int,str,userData)

我们现在在第0位插入一个条目

点开下拉菜单时发现成功插入

2.3.2  插入字符与图标混合条目 insertitem(int,QIcon,str,userData)

我们在3号位插入图文混合条目

成功在3号位插入

2.3.3  插入批量纯字符条目 insertitems(int,iterable[str]))

我们在5号位插入批量纯字符条目

2.4  设置条目项

2.4.1  设置指定条目图标 setItemIcon(int,QIcon)

我们给7号位的条目添加图标

发现第7位已经添加了图标

2.4.2  设置指定条目内容 setItemText(int,str)

我们设置第4个条目的内容

2.4.3  插入用户数据 setItemData(int,userDate,int(which user))

用户数据在界面内是不显示的

我们在6.数据获取中会讲怎么获取它

2.5  删除指定的条目项 removeItem()

删除前是这样的

我们删除第0位的条目项

发现已被删除

2.6  插分割线 insertSeparator()

我们现在在1号位和2号位之间分割线

  • 注:此处是在指定位数的上面插入分割线

2.7  设置当前文本

我们当前编辑的文本默认为第一个加入条目的文本

2.7.1  设置指定位数条目作为当前文本 setCurrentIndex()

我们现在把第四个条目设置为当前文本

2.7.2  设置条目中的字符串为当前文本 setCurrentText(str)

  • 不能使用条目外的字符串作为当前文本

2.7.3  设置任意字符串为当前文本 setEditText(str)

如果像使setEditText()有效,我们需要先将控件设置为可编辑状态

2.7.3.1  设置可编辑状态 setEditable()

设置过后,我们使用setEditText()

如果设置的字符串不在条目之中,我们输入完成后按下回车

发现会被加入到下拉菜单中

3  模型操作

由于涉及到QAbstractItemModel控件,我们先用这个控件举个例子,关于这个控件的详细用法之后再讲

首先我们创建一个基础模型对象,之后创建三个条目,之后将条目3作为条目2的自条目,条目1条目2为模型的根条目

之后将模型作为参数给cbb

现在我们运行之后是这样的

我们并没有看到item3,这个是因为视图的原因,下面我们对视图进行操作

4  视图操作

我们在这里使用树形视图

这个时候运行之后是这样

把控件尺寸改大一点就可以全部展示出来

5  代理设置

这个放到后面学这个控件的时候讲

6  数据获取

我们新建一个QComboBox,然后放三个条目进去

6.1  获取条目个数 count()

6.2  获取指定条目图标对象 itemIcon(int)

我们首先给一个条目一个图标

在这里我们如果获取图标前没有设置图标,该方法会返回一个空的QIcon对象,我们可以也可以对这个QIcon对象进行操作

6.3  获取指定条目的内容 itemText()

6.4  获取指定条目的用户数据 itemData(int)

首先我们对0号条目设置用户数据

之后再获取它

6.5  获取当前数据的索引 currentIndex()

  • 我们在这里获取了当前条目的索引,就可以使用6.2,6.3,6.4中的方法去获得当前条目的相关信息

6.6  获取当前数据的内容 currentText()

7  数据限制

我们现在搞20个条目,内容为1-20的数字

7.1  最大条目数

7.1.1  设置 setMaxCount()

我们限制最大条目数为5

条目数为最大值时,此时再添加新的条目添加不进去

7.1.2  获取 maxCount()

7.2  最大显示条目数

7.2.1  获取 maxVisbleItems()

默认情况下,我们最大显示条目数为10

7.2.2  设置 setMaxVisibleItems()

我们现在将其设置为15

8  常规操作

8.1  可编辑

默认状态下是不可编辑的

8.1.1  设置 setEditable()

8.1.2  获取 isEditable()

8.2  条目可重复

默认状态下是不可重复的

如果用代码加入条目的话可以重复,用户手动输入进去则默认不能重复

我们运行后输入一个1

发现已经加入到条目中了,现在我们再输入一个1

此时我们发现加入不了了

8.2.1  设置 setDuplicatesEnabled()

运行后,我们输入一个1,然后按两下回车

发现可以加入了

8.2.2  获取 duplicatesEnabled()

8.3  有框架

这个设置设置有无框架时只有在可编辑状态下才有区别

默认情况下是有框架的

8.3.1  设置 setFrame()

8.3.2  获取 hasFrame()

8.4  图标尺寸

我们首先搞一个有图标的条目

8.4.1  设置 setIconSize()

我们将图标大小设置为50,50

8.4.2  获取 iconSize()

8.5  清空

8.5.1  清空所有条目 clear()

我们搞一个按钮试一下下面这个方法

运行开始时,我们发现有一个之前创建的气球条目

现在我点一下按钮

发现条目没了

8.5.2  清空正在编辑的内容 clearEditText()

首先我们需要让组合框为可编辑状态

然后搞一个按钮,连接clearEditText()

初始状态是这样的,此时该条目已处于编辑状态

我们按一下按钮

发现文字没有了

8.6  弹出 showPopup()

我们搞一个按钮连接showPopup()

起始状态是这样的

我们点一下弹出

发现弹出了条目

8.7  完成器

首先我们先搞一个完成器

第一个参数是提示的字段,第二个参数为父对象

8.7.1  设置 setCompleter()

运行之后我们输入大写的S

完成器是不出现在条目中的

8.7.2  获取 completer()

8.8  验证器

我们先搞一个子类继承QValidator

用的还是34.QLineEdit中使用的验证器

8.8.1  设置 setValidator()

当我们输入1800,我们发现只能输入到180

8.8.2  获取 validator()

9  尺寸调整策略

9.1  设置 setSizeAdjustPolicy()

可选参数为下面这四个

  • QComboBox.AdjustToContents 根据最长内容进行调整
  • QComboBox.AdjustToContentsOnFirstShow 根据第一次显示的内容进行调整(默认值)

下面两个是没有作用的

  • QComboBox.AdjustToMinimumContentsLength 根据最小长度内容进行调整(效果同QComboBox.AdjustToContentsOnFirstShow)
  • QComboBox.AdjustToMinimumContentsLengthWithIcon 根据带图标的最小长度进行调整

我们先给组合框设置可编辑,这样效果更好

9.1.1  QComboBox.AdjustToContents 根据最长内容进行调整

我们输入一个1,之后按回车

我们输入hello,然后按回车

我们输入2,然后按回车

发现不会再变小了

9.1.2  QComboBox.AdjustToContentsOnFirstShow 根据第一次显示的内容进行调整(默认值)

我们输入一个1,然后按回车

发现不会变小了,这个控件第一次展示出来什么样子,后面就一直会是什么样子,我们再输入hello world

没有变化

下面的几个方法(9.2之前)经测试都是没有什么用的了

9.1.3  最小长度

9.1.3.1  设置最小长度 setMinimumContentsLength()

9.1.3.2  获取最小长度 minimumContentsLength()

9.1.4  QComboBox.AdjustToMinimumContentsLength 根据最小长度内容进行调整

运行后,我们输入一个1

没变,说明它认定当前就是最小状态了

9.1.5  QComboBox.AdjustToMinimumContentsLengthWithIcon 根据带图标的最小长度进行调整

没有用,并不是按照带图标调整的

9.2  获取尺寸政策 sizeAdjustPolicy()

会返回一个int

10  信号

我们首先搞三个条目进去

10.1  任意条目被选中时触发 activated 会传递一个int

运行之后我们依次选择hello,world和2

10.2  任意条目被选中时触发 activated[str] 会传递一个str

运行之后我们依次选择hello,world和2

10.3  选中的索引发生改变时 currentIndexChanged() 会传递一个int

运行之后我们依次选择hello,world和2

10.4  选中的索引发生改变时 currentIndexChanged[str] 会传递一个str

运行之后我们依次选择hello,world和2

10.5  当前文本内容发生改变 currentTextChanged 会传递一个str

运行之后我们依次选择hello,world和2

10.6  编辑的文本发生改变时 editTextChanged 会传递一个str

首先要让组合框变为可编辑状态

运行后我们按三个退格

10.7  移动到下拉菜单任意条目触发 highlighted 会传递一个Int

运行后点开下拉菜单,将鼠标移动到hello

之后再移动到world和2

10.8  移动到下拉菜单任意条目触发 highlighted[str] 会传递一个str

运行后点开菜单,分别移动到hello,world和2的条目

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值