当前位置:   article > 正文

Qt扫盲-QComboBox理论总结_qcombox

qcombox

1. 简述

QComboBox 提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。QCombox是显示当前项目的选择小部件,可以弹出可选项目的列表。QComBox其实就是一个下拉列表。选择的项目内容就会显示在外面,其他项目会被隐藏,同时在下拉时之前选择的项目位置会被标记好,可以理解显示的项目其实是一个之前选择位置项目的副本。这个控件其实预制很很多选项给用户选择,减少手动输入的麻烦。当然哈,QComBox可以是可编辑的,允许用户修改列表中的每个项目。但是这个不会影响到预先设置项目。

就像下面这种用法,很多能预制的就不要手写啦
在这里插入图片描述

这篇博文主要是还是不是使用 model/view 版本的介绍哈。其实就是QComBox的基础简述。

2. 显示内容

QComBox可以包含像素图以及字符串;可以用 insertItem() 和 setItemText() 的相关重置函数来插入带图标的列表项
在这里插入图片描述

还可以设置QComBox 可以编辑。对于可编辑的QComBox,提供了函数 clearEditText(),用于清除显示的字符串而不更改QComBox的内容。(其实就是只是修改当前的显示内容,之前预制的项目还是不会被修改的呐)
在这里插入图片描述

3. 信号

如果QComBox的当前项发生变化,则发出两个信号,urrentIndexChanged() 和 activated()。无论更改是通过编程方式还是通过用户交互完成的,始终发出 currentIndexChanged(),而 active() 仅在更改由用户交互引起时发出。当用户突出显示QComBox弹出列表中的项目时,将发出 highlighted() 信号。所有三个信号都存在两个版本,一个带有QString参数,另一个带有int参数。如果用户选择或突出显示像素图,则仅发出 int 信号。每当可编辑QComBox的文本发生更改时,都会发出 editTextChanged() 信号。

QComBox的信号表

信号含义
activated(int index)QComBox的当前项发生变化,仅在更改由用户交互引起时发出,说那个列表项位置被激活了
currentIndexChanged(const QString &text)combox位置发生后,发生的方式是通过编程方式、或通过用户交互都会触发,携带一个当前项的 text
currentIndexChanged(int index)combox位置发生后,发生的方式是通过编程方式、或通过用户交互都会触发,携带一个当前项的 index
currentTextChanged(const QString &text)当选择项的文字和上一次选择项不同是,携带一个当前项的 text
editTextChanged(const QString &text)每当可编辑QComBox的文本发生更改时
highlighted(int index)就是下拉列表显示的时候,我们可以用 上 下键 移动那个选择的项目时发射这个信号。
textActivated(const QString &text)这个没用过
textHighlighted(const QString &text)这个没用过

4. 常用功能

当用户在可编辑QComBox中插入新项目(字符串)的时候,还是有一个插入的策略。默认策略是 InsertAtBottom,但您可以使用 setInsertPolicy() 更改此设置。

策略含义
ConstantDescription
QComboBox::NoInsert不会插入
QComboBox::InsertAtTop顶部插入
QComboBox::InsertAtCurrent当前项将被替换输入的新字符串
QComboBox::InsertAtBottom后的字符串将被插入到QCombox中的最后一项。
QComboBox::InsertAfterCurrent新的字符串插入当前项的后面
QComboBox::InsertBeforeCurrent新的字符串插入当前项的前面
QComboBox::InsertAlphabetically按照首字母顺序的插入字符串

可以使用 QValidator 将输入限制为可编辑的QComBox;参见 setValidator()。默认情况下,接受任何输入。

QComBox提供了很多好用的功能。

  • 可以使用插入单个、多个Item,例如 insertItem() 和 insertItems()
  • 可以使用 setItemText() 修改项目
  • 可以使用 removeItem() 删除项目
  • 可以使用 clear() 删除所有项目
  • 当前项的文本由 currentText() 返回,编号项的文本与 text() 一起返回
  • 可以使用 setCurrentIndex() 设置当前项
  • QComBox中的项目个数由 count() 返回
  • 可以使用 setMaxCount() 设置的最大项目数
  • 还可以用 setEditable() 是否可编辑 等等

对于可编辑的QComBox,您可以使用 setCompleter() 设置自动补全,就是输入一部分内容,就显示一个可能选择列表,等后面专门用 QCompleter 来完成

5. model/view 使用

QComboBox 使用模型/视图框架作为其弹出列表并存储其项目。默认情况下,QStandardItemModel 存储项目,QListView 子类显示弹出列表。这个我后面会把Model/View和这个连在一起重新梳理下

6. 槽函数

因为信号有些是重载的信号,在槽函数连接的时候就要指定一下是哪个信号,就用的QOverload 函数来指定的就好。
就行下面的 currentIndexChanged 信号在连接时候的使用。

connect(comboBox, QOverload<const QString &>::of(&QComboBox::currentIndexChanged),
      [=](const QString &text){ /* ... */ });
      
connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
      [=](int index){ /* ... */ });
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/660978
推荐阅读
相关标签
  

闽ICP备14008679号