简述
QComboBox控件是按钮和弹出列表的组合。
QComboBox提供了一种以占用最少屏幕空间的方式向用户显示选项列表的方法。
详细描述
组合框是显示当前项目的选择类控件,并且可以弹出可选项目的列表。
组合框可以包含像素图和字符串;insertItem()和setItemText()函数在QComboBox中被适当地重载了。对于可编辑的组合框,提供了函数clearEditText(),以清除显示的字符串而不更改组合框的内容。
如果组合框的当前项目发生更改,则会发出两个信号:currentIndexChanged() 和 activated()。无论更改是通过编程方式还是通过用户交互进行,始终都会发出currentIndexChanged(),而仅当更改是由用户交互引起时才发出activate()。当用户突出显示组合框弹出列表中的一个项目时,将发出highlighted()信号。所有这三个信号都有两个版本,一个带有QString参数,另一个带有int参数。如果用户选择或突出显示一个像素图,则仅会发出int信号。只要更改了可编辑组合框的文本,就会发出editTextChanged()信号。
当用户在可编辑的组合框中输入新字符串时,该窗口小部件可能会插入也可能不会插入,并且可以将其插入多个位置。默认策略是InsertAtBottom,但是可以使用setInsertPolicy()进行更改。
使用QValidator可以限制输入内容范围。请参见setValidator()。默认情况下,接受任何输入。
可以使用插入函数来填充组合框,例如insertItem()和insertItems()。可以使用setItemText()更改项目。可以使用removeItem()删除项目,并且可以使用clear()删除所有项目。当前项目的文本由currentText()返回,而编号项目的文本由text()返回。可以使用setCurrentIndex()设置当前项目。组合框中的项目数由count()返回。可以使用setMaxCount()设置最大项目数。您可以使用setEditable()进行编辑。对于可编辑的组合框,您可以使用setCompleter()设置自动完成功能,并且可以使用setDuplicatesEnabled()设置用户是否可以添加重复项。
使用方法
下面用一个小例子介绍基本使用方法
效果

源码
QStringList comboBoxList = {"编译", "编译所有", "运行"};
QComboBox *comboBox = new QComboBox;
comboBox->addItem(QString("粘贴"));
comboBox->addItem(QIcon(":/picture/tool.png"), QString("工具"));
comboBox->addItems(comboBoxList);
comboBox->setEditable(true);
comboBox->setDuplicatesEnabled(true);
comboBox->insertSeparator(2);
comboBox->setItemIcon(0, QIcon(":/picture/paste.png"));
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(comboBox);
this->setLayout(layout);
this->setWindowTitle("Shijia Yin");
常用接口
属性
- 组合框中条目数量
- count
- 图标尺寸
- iconSize
- 当前条目数据
- currentData
- 条目插入策略
- insertPolicy
常量 | 值 | 描述 |
---|---|---|
QComboBox::NoInsert | 0 | 该字符串将不会插入到组合框中。 |
QComboBox::InsertAtTop | 1 | 该字符串将作为组合框中的第一项插入。 |
QComboBox::InsertAtCurrent | 2 | 当前项目将被字符串替换。 |
QComboBox::InsertAtBottom | 3 | 该字符串将被插入组合框中的最后一项之后。 |
QComboBox::InsertAfterCurrent | 4 | 该字符串将插入到组合框中当前项目之后。 |
QComboBox::InsertBeforeCurrent | 5 | 该字符串将插入到组合框中当前项目的前面。 |
QComboBox::InsertAlphabetically | 6 | 该字符串将按字母顺序插入组合框中。 |
- 当前条目索引
- currentIndex
- 条目最大数量
- maxCount
- 当前文本
- currentText
- 可否向输入框粘贴内容
- duplicatesEnabled
- 是否可编辑
- editable
- 添加新内容或更改内容时,QComboBox调整调整策略。
- SizeAdjustPolicy
常量 | 值 | 描述 |
---|---|---|
QComboBox::AdjustToContents | 0 | 组合框将始终根据内容进行调整 |
QComboBox::AdjustToContentsOnFirstShow | 1 | 组合框将在第一次显示时调整为其内容。 |
QComboBox::AdjustToMinimumContentsLength | 2 | 请改用AdjustToContents或AdjustToContentsOnFirstShow。 |
QComboBox::AdjustToMinimumContentsLengthWithIcon | 3 | 组合框将调整为最小内容长度加上图标的空间。出于性能原因,请在大型模型上使用此策略。 |
- 是否使用了Frame
- frame
公共函数
-
添加条目
- addItem(const QString &text, const QVariant &userData = QVariant())
- addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
- addItems(const QStringList &texts)
-
移除条目
- removeItem(int index)
-
隐藏弹出列表
- hidePopup()
-
显示弹出列表
- showPopup()
-
插入条目
- insertItem(int index, const QString &text, const QVariant &userData = QVariant())
- insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
- insertItems(int index, const QStringList &list)
-
插入分隔符
- insertSeparator(int index)
-
设置可编辑
- setEditable(bool editable)
-
设置插入策略
- setInsertPolicy(QComboBox::InsertPolicy policy)
-
设置调整策略
- setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy)
槽函数
槽 | 描述 |
---|---|
clear() | 移除所有条目 |
clearEditText() | 清除行编辑器文本 |
setCurrentIndex(int index) | 设置特定索引控件为当前控件 |
setCurrentText(const QString &text) | 设置特定文本控件为当前控件 |
setEditText(const QString &text) | 设置行编辑器文本 |
信号函数
信号 | 描述 |
---|---|
activated(int index) | 当用户选中某个条目时,发出带有被选中条目索引的信号,即使选择没有发生变化 |
activated(const QString &text) | 当用户选中某个条目时,发出带有被选中条目文本的信号,即使选择没有发生变化 |
currentIndexChanged(int index) | 当用户选中某个条目时,发出带有被选中条目索引的信号,仅当选择发生变化 |
currentIndexChanged(const QString &text) | 当用户选中某个条目时,发出带有被选中条目文本的信号,仅当选择发生变化 |
currentTextChanged(const QString &text) | 当前文本发生变化时,发出带有新文本的信号 |
editTextChanged(const QString &text) | 当前文本发生变化时,发出带有新文本的信号 |
highlighted(int index) | 发出带有当前高亮的条目的索引的信号 |
highlighted(const QString &text) | 发出带有当前高亮的条目的文本的信号 |
引用
[1] Qt助手