簡述
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助手