QComboBox 类

The QComboBox 小部件是组合按钮和弹出列表。 更多...

头: #include <QComboBox>
继承: QWidget
继承者: QFontComboBox

公共类型

enum InsertPolicy { NoInsert, InsertAtTop, InsertAtCurrent, InsertAtBottom, ..., InsertAlphabetically }
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

特性

公共函数

QComboBox (QWidget * parent = 0)
~QComboBox ()
void addItem (const QString & text , const QVariant & userData = QVariant())
void addItem (const QIcon & icon , const QString & text , const QVariant & userData = QVariant())
void addItems (const QStringList & texts )
QCompleter * completer () const
int count () const
int currentIndex () const
QString currentText () const
bool duplicatesEnabled () const
int findData (const QVariant & data , int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const
int findText (const QString & text , Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const
bool hasFrame () const
virtual void hidePopup ()
QSize iconSize () const
void insertItem (int index , const QString & text , const QVariant & userData = QVariant())
void insertItem (int index , const QIcon & icon , const QString & text , const QVariant & userData = QVariant())
void insertItems (int index , const QStringList & list )
InsertPolicy insertPolicy () const
void insertSeparator (int index )
bool isEditable () const
QVariant itemData (int index , int role = Qt::UserRole) const
QAbstractItemDelegate * itemDelegate () const
QIcon itemIcon (int index ) const
QString itemText (int index ) const
QLineEdit * lineEdit () const
int maxCount () const
int maxVisibleItems () const
int minimumContentsLength () const
QAbstractItemModel * model () const
int modelColumn () const
void removeItem (int index )
QModelIndex rootModelIndex () const
void setCompleter (QCompleter * completer )
void setDuplicatesEnabled (bool enable )
void setEditable (bool editable )
void setFrame (bool)
void setIconSize (const QSize & size )
void setInsertPolicy (InsertPolicy policy )
void setItemData (int index , const QVariant & value , int role = Qt::UserRole)
void setItemDelegate (QAbstractItemDelegate * delegate )
void setItemIcon (int index , const QIcon & icon )
void setItemText (int index , const QString & text )
void setLineEdit (QLineEdit * edit )
void setMaxCount (int max )
void setMaxVisibleItems (int maxItems )
void setMinimumContentsLength (int characters )
void setModel (QAbstractItemModel * model )
void setModelColumn (int visibleColumn )
void setRootModelIndex (const QModelIndex & index )
void setSizeAdjustPolicy (SizeAdjustPolicy policy )
void setValidator (const QValidator * validator )
void setView (QAbstractItemView * itemView )
virtual void showPopup ()
SizeAdjustPolicy sizeAdjustPolicy () const
const QValidator * validator () const
QAbstractItemView * view () const

重实现公共函数

virtual bool event (QEvent * event )
virtual QSize minimumSizeHint () const
virtual QSize sizeHint () const

公共槽

void clear ()
void clearEditText ()
void setCurrentIndex (int index )
void setEditText (const QString & text )

信号

void activated (int index )
void activated (const QString & text )
void currentIndexChanged (int index )
void currentIndexChanged (const QString & text )
void editTextChanged (const QString & text )
void highlighted (int index )
void highlighted (const QString & text )

保护函数

void initStyleOption (QStyleOptionComboBox * option ) const

重实现保护函数

virtual void changeEvent (QEvent * e )
virtual void contextMenuEvent (QContextMenuEvent * e )
virtual void focusInEvent (QFocusEvent * e )
virtual void focusOutEvent (QFocusEvent * e )
virtual void hideEvent (QHideEvent * e )
virtual void inputMethodEvent (QInputMethodEvent * e )
virtual QVariant inputMethodQuery (Qt::InputMethodQuery query ) const
virtual void keyPressEvent (QKeyEvent * e )
virtual void keyReleaseEvent (QKeyEvent * e )
virtual void mousePressEvent (QMouseEvent * e )
virtual void mouseReleaseEvent (QMouseEvent * e )
virtual void paintEvent (QPaintEvent * e )
virtual void resizeEvent (QResizeEvent * e )
virtual void showEvent (QShowEvent * e )
virtual void wheelEvent (QWheelEvent * e )

额外继承成员

详细描述

The QComboBox 小部件是组合按钮和弹出列表。

A QComboBox 以占用最少屏幕空间数量的方式,向用户提供呈现选项列表的手段。

组合框是显示当前项的选择 Widget,且可以弹出可选择项的列表。组合框可能是可编辑的,使用户能够修改每列表项。

组合框可以包含像素图及字符串; insertItem () 和 setItemText () 函数适合被重载。对于可编辑组合框,函数 clearEditText () 的提供以清零显示字符串无需改变组合框内容。

有 2 个信号被发射,若当前组合框项改变, currentIndexChanged () 和 activated (). currentIndexChanged () 始终被发射,不管改变是通过编程方式完成,还是通过用户交互完成,而 activated () 才被发射当通过用户交互导致改变时。 highlighted () 信号被发射当用户突显组合框弹出列表项时。所有 3 信号均有 2 个版本,一个带有 QString 自变量和一个带有 int 自变量。若用户选择或突显像素图,仅 int 信号被发射。每当可编辑组合框文本改变时 editTextChanged () 信号发射。

When the user enters a new string in an editable combobox, the widget may or may not insert it, and it can insert it in several locations. The default policy is is AtBottom 但可以改变这使用 setInsertPolicy ().

可以将输入约束到可编辑组合框使用 QValidator ;见 setValidator ()。默认情况下,接受任何输入。

可以使用插入函数填充组合框, insertItem () 和 insertItems () 例如。可以改变项采用 setItemText ()。可以移除项采用 removeItem () 和可以移除所有项采用 clear ()。返回当前项文本通过 currentText (), and the text of a numbered item is returned with text (). The current item can be set with setCurrentIndex ()。返回组合框的项数通过 count ();可以设置最大项数采用 setMaxCount ()。可以允许编辑使用 setEditable ()。对于可编辑组合框,可以设置自动补全使用 setCompleter () 和设置用户是否可以重复添加采用 setDuplicatesEnabled ().

QComboBox 使用 模型/视图框架 用于其弹出列表并存储其项。默认情况下 QStandardItemModel 存储项和 QListView 子类显示弹出列表。可以直接访问模型和视图 (采用 model () 和 view ()),但 QComboBox 还提供用来设置和获取项数据的函数 (如 setItemData () 和 itemText ())。还可以设置新的模型和视图 (采用 setModel () 和 setView ())。对于组合框标签文本和图标,模型数据拥有 Qt::DisplayRole and Qt::DecorationRole 在使用。注意:不可以更改 SelectionMode view (),如通过使用 setSelectionMode() .

Comboboxes in the different built-in styles.

另请参阅 QLineEdit , QSpinBox , QRadioButton , QButtonGroup ,和 GUI 设计手册:组合框、下拉列表框 .

成员类型文档编制

enum QComboBox:: InsertPolicy

此枚举指定什么是 QComboBox 应该做的,当用户键入新字符串时。

常量 描述
QComboBox::NoInsert 0 字符串不会插入组合框。
QComboBox::InsertAtTop 1 字符串将插入作为第一组合框项。
QComboBox::InsertAtCurrent 2 当前项将 replaced 通过字符串。
QComboBox::InsertAtBottom 3 将字符串插入在组合框最后项之后。
QComboBox::InsertAfterCurrent 4 将字符串插入在组合框当前项之后。
QComboBox::InsertBeforeCurrent 5 将字符串插入在组合框当前项之前。
QComboBox::InsertAlphabetically 6 按字母次序将字符串插入组合框。

enum QComboBox:: SizeAdjustPolicy

此枚举指定大小提示如何 QComboBox 调节当添加新内容或改变内容时。

常量 描述
QComboBox::AdjustToContents 0 组合框始终根据内容调节
QComboBox::AdjustToContentsOnFirstShow 1 组合框将调节到其首次展示内容。
QComboBox::AdjustToMinimumContentsLength 2 使用 AdjustToContents 或 AdjustToContentsOnFirstShow 代替。
QComboBox::AdjustToMinimumContentsLengthWithIcon 3 组合框将调节到 minimumContentsLength 加图标空间。出于性能原因,在大型模型中使用此策略。

特性文档编制

count : const int

此特性保持组合框中的项数。

默认情况下,对于空组合框,此特性拥有 0 值。

访问函数:

int count () const

currentIndex : int

此特性保持组合框当前项的索引。

当前索引会改变,在插入或移除项时。

默认情况下,对于空组合框或未设置当前项的组合框,此特性拥有 -1 值。

访问函数:

int currentIndex () const
void setCurrentIndex (int index )

通知程序信号:

void currentIndexChanged (int index )
void currentIndexChanged (const QString & text )

currentText : const QString

This property holds the current text.

若组合框是可编辑的,当前文本是由行编辑显示的值。否则,它是当前项的值,或空字符串若组合框为空或未设置当前项。

访问函数:

QString currentText () const

另请参阅 editable .

duplicatesEnabled : bool

This property holds whether the user can enter duplicate items into the combobox.

注意:以编程方式把重复项插入组合框始终是可能的。

By default, this property is false (duplicates are not allowed).

访问函数:

bool duplicatesEnabled () const
void setDuplicatesEnabled (bool enable )

editable : bool

This property holds whether the combo box can be edited by the user.

By default, this property is false. The effect of editing depends on the insert policy.

访问函数:

bool isEditable () const
void setEditable (bool editable )

另请参阅 InsertPolicy .

frame : bool

This property holds whether the combo box draws itself with a frame.

若启用 (认默) 组合框将自身绘制在框架内,否则组合框将绘制自身没有任何框架。

访问函数:

bool hasFrame () const
void setFrame (bool)

iconSize : QSize

此特性保持组合框中展示图标的尺寸。

除非明确设置,否则返回当前风格的默认值。此尺寸是图标可以拥有的最大尺寸。不会按比例放大较小尺寸图标。

访问函数:

QSize iconSize () const
void setIconSize (const QSize & size )

insertPolicy : InsertPolicy

This property holds the policy used to determine where user-inserted items should appear in the combobox.

默认值为 AtBottom ,指示新项将出现在项列表底部。

访问函数:

InsertPolicy insertPolicy () const
void setInsertPolicy (InsertPolicy policy )

另请参阅 InsertPolicy .

maxCount : int

This property holds the maximum number of items allowed in the combobox.

注意: 若将最大数设为小于当前组合框项数量,额外项将被截取。若有为组合框设置外部模型,这也适用。

默认情况下,此特性值派生自最高可用有符号整数 (通常为 2147483647)。

访问函数:

int maxCount () const
void setMaxCount (int max )

maxVisibleItems : int

This property holds the maximum allowed size on screen of the combo box, measured in items.

默认情况下,此特性拥有 10 值。

注意: 不可编辑组合框忽略此特性当样式返回 true 时对于 QStyle::SH_ComboBox_Popup (譬如:Mac 样式或 Gtk+ 样式)。

访问函数:

int maxVisibleItems () const
void setMaxVisibleItems (int maxItems )

minimumContentsLength : int

此特性保持组合框应拟合的最小字符数。

默认值为 0。

若此特性被设为正值, minimumSizeHint () 和 sizeHint () 把它考虑在内。

访问函数:

int minimumContentsLength () const
void setMinimumContentsLength (int characters )

另请参阅 sizeAdjustPolicy .

modelColumn : int

此特性保持可见模型列。

若在填充组合框之前设置,弹出视图将不受影响且会展示第一列 (使用此属性的默认值)。

默认情况下,此特性拥有 0 值。

访问函数:

int modelColumn () const
void setModelColumn (int visibleColumn )

sizeAdjustPolicy : SizeAdjustPolicy

This property holds the policy describing how the size of the combobox changes when the content changes.

默认值为 AdjustToContentsOnFirstShow .

访问函数:

SizeAdjustPolicy sizeAdjustPolicy () const
void setSizeAdjustPolicy (SizeAdjustPolicy policy )

另请参阅 SizeAdjustPolicy .

成员函数文档编制

QComboBox:: QComboBox ( QWidget * parent = 0)

构造组合框采用给定 parent ,使用默认模型 QStandardItemModel .

QComboBox:: ~QComboBox ()

销毁组合框。

[signal] void QComboBox:: activated ( int index )

此信号被发射当用户选取组合框项时。项的 index 被传递。注意:此信号被发送,甚至在选取不改变时。若需要知道选取实际何时改变,使用信号 currentIndexChanged ().

注意: 信号 activated 在此类中是重载。要使用函数指针句法连接到此信号,必须在静态铸造中指定信号类型,如此范例所示:

connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated),
    [=](int index){ /* ... */ });
					

[signal] void QComboBox:: activated (const QString & text )

此信号被发射当用户选取组合框项时。项的 text 被传递。注意:此信号被发送,甚至在选取不改变时。若需要知道选取实际何时改变,使用信号 currentIndexChanged ().

注意: 信号 activated 在此类中是重载。要使用函数指针句法连接到此信号,必须在静态铸造中指定信号类型,如此范例所示:

connect(comboBox, static_cast<void(QComboBox::*)(const QString &)>(&QComboBox::activated),
    [=](const QString &text){ /* ... */ });
					

void QComboBox:: addItem (const QString & text , const QVariant & userData = QVariant())

把项添加到组合框,采用给定 text ,和包含指定 userData (存储在 Qt::UserRole )。项会被追加到现有项列表。

void QComboBox:: addItem (const QIcon & icon , const QString & text , const QVariant & userData = QVariant())

把项添加到组合框,采用给定 icon and text ,和包含指定 userData (存储在 Qt::UserRole )。项会被追加到现有项列表。

void QComboBox:: addItems (const QStringList & texts )

添加每字符串按给定 texts 到组合框。每项被依次追加到现有项列表。

[virtual protected] void QComboBox:: changeEvent ( QEvent * e )

重实现自 QWidget::changeEvent ().

[slot] void QComboBox:: clear ()

清零组合框,移除所有项。

注意:若组合框有设置外部模型,此模型仍会被清零 (当调用此函数时)。

[slot] void QComboBox:: clearEditText ()

清零用于在组合框中编辑的行编辑内容。

QCompleter * QComboBox:: completer () const

返回被用于自动补全组合框文本输入的补全器。

该函数在 Qt 4.2 引入。

另请参阅 setCompleter () 和 editable .

[virtual protected] void QComboBox:: contextMenuEvent ( QContextMenuEvent * e )

重实现自 QWidget::contextMenuEvent ().

[signal] void QComboBox:: editTextChanged (const QString & text )

此信号被发射当组合框行编辑 Widget 文本改变时。指定新文本通过 text .

[虚拟] bool QComboBox:: event ( QEvent * event )

重实现自 QObject::event ().

int QComboBox:: findData (const QVariant & data , int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const

返回索引当项包含给定 data 为给定 role ;否则返回 -1。

The flags 指定如何搜索组合框项。

int QComboBox:: findText (const QString & text , Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const

返回索引当项包含给定 text ;否则返回 -1。

The flags 指定如何搜索组合框项。

[virtual protected] void QComboBox:: focusInEvent ( QFocusEvent * e )

重实现自 QWidget::focusInEvent ().

[virtual protected] void QComboBox:: focusOutEvent ( QFocusEvent * e )

重实现自 QWidget::focusOutEvent ().

[virtual protected] void QComboBox:: hideEvent ( QHideEvent * e )

重实现自 QWidget::hideEvent ().

[虚拟] void QComboBox:: hidePopup ()

隐藏组合框项列表若它目前可见并重置内部状态,以便若自定义弹出窗口展示在重实现 showPopup (),那么还需要重实现 hidePopup() 函数以隐藏自定义弹出窗口,和调用基类实现以重置内部状态每当自定义弹出 Widget 被隐藏时。

另请参阅 showPopup ().

[signal] void QComboBox:: highlighted ( int index )

此信号被发送,当用户突显组合框弹出列表项。项的 index 被传递。

注意: 信号 highlighted 在此类中是重载。要使用函数指针句法连接到此信号,必须在静态铸造中指定信号类型,如此范例所示:

connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::highlighted),
    [=](int index){ /* ... */ });
					

[signal] void QComboBox:: highlighted (const QString & text )

此信号被发送,当用户突显组合框弹出列表项。项的 text 被传递。

注意: 信号 highlighted 在此类中是重载。要使用函数指针句法连接到此信号,必须在静态铸造中指定信号类型,如此范例所示:

connect(comboBox, static_cast<void(QComboBox::*)(const QString &)>(&QComboBox::highlighted),
    [=](const QString &text){ /* ... */ });
					

[protected] void QComboBox:: initStyleOption ( QStyleOptionComboBox * option ) const

初始化 option 采用值来自此 QComboBox 。此方法对子类是有用的,当需要 QStyleOptionComboBox ,但不希望自己填充所有信息。

另请参阅 QStyleOption::initFrom ().

[virtual protected] void QComboBox:: inputMethodEvent ( QInputMethodEvent * e )

重实现自 QWidget::inputMethodEvent ().

[virtual protected] QVariant QComboBox:: inputMethodQuery ( Qt::InputMethodQuery query ) const

重实现自 QWidget::inputMethodQuery ().

void QComboBox:: insertItem ( int index , const QString & text , const QVariant & userData = QVariant())

插入 text and userData (存储在 Qt::UserRole ) 进组合框在给定 index .

若索引 >= 项总数,新项会被追加到现有项列表。若索引为 0 (或为负),新项会前置到现有项列表。

另请参阅 insertItems ().

void QComboBox:: insertItem ( int index , const QIcon & icon , const QString & text , const QVariant & userData = QVariant())

插入 icon , text and userData (存储在 Qt::UserRole ) 进组合框在给定 index .

若索引 >= 项总数,新项会被追加到现有项列表。若索引为 0 (或为负),新项会前置到现有项列表。

另请参阅 insertItems ().

void QComboBox:: insertItems ( int index , const QStringList & list )

插入字符串从 list 到组合框作为单独项,起始于 index 指定。

若索引 > 项总数,新项会被追加到现有项列表。若索引为 0 (或为负),新项会被前置到现有项列表。

另请参阅 insertItem ().

void QComboBox:: insertSeparator ( int index )

将分隔符项插入组合框在给定 index .

若索引 >= 项总数,新项会被追加到现有项列表。若索引为 0 (或为负),新项会前置到现有项列表。

该函数在 Qt 4.4 引入。

另请参阅 insertItem ().

QVariant QComboBox:: itemData ( int index , int role = Qt::UserRole) const

返回数据为给定 role 以给定 index in the combobox, or QVariant::Invalid 若此角色没有数据。

另请参阅 setItemData ().

QAbstractItemDelegate * QComboBox:: itemDelegate () const

返回由弹出列表视图使用的项委托。

另请参阅 setItemDelegate ().

QIcon QComboBox:: itemIcon ( int index ) const

返回图标为给定 index 在组合框。

另请参阅 setItemIcon ().

QString QComboBox:: itemText ( int index ) const

返回文本为给定 index 在组合框。

另请参阅 setItemText ().

[virtual protected] void QComboBox:: keyPressEvent ( QKeyEvent * e )

重实现自 QWidget::keyPressEvent ().

[virtual protected] void QComboBox:: keyReleaseEvent ( QKeyEvent * e )

重实现自 QWidget::keyReleaseEvent ().

QLineEdit * QComboBox:: lineEdit () const

Returns the line edit used to edit items in the combobox, or 0 if there is no line edit.

仅可编辑组合框拥有行编辑。

另请参阅 setLineEdit ().

[虚拟] QSize QComboBox:: minimumSizeHint () const

重实现自 QWidget::minimumSizeHint ().

QAbstractItemModel * QComboBox:: model () const

返回由组合框使用的模型。

另请参阅 setModel ().

[virtual protected] void QComboBox:: mousePressEvent ( QMouseEvent * e )

重实现自 QWidget::mousePressEvent ().

[virtual protected] void QComboBox:: mouseReleaseEvent ( QMouseEvent * e )

重实现自 QWidget::mouseReleaseEvent ().

[virtual protected] void QComboBox:: paintEvent ( QPaintEvent * e )

重实现自 QWidget::paintEvent ().

void QComboBox:: removeItem ( int index )

移除项位于给定 index 从组合框。这将更新当前索引,若索引被移除。

此函数什么都不做,若 index 超出范围。

[virtual protected] void QComboBox:: resizeEvent ( QResizeEvent * e )

重实现自 QWidget::resizeEvent ().

QModelIndex QComboBox:: rootModelIndex () const

返回组合框项的根模型项索引。

另请参阅 setRootModelIndex ().

void QComboBox:: setCompleter ( QCompleter * completer )

设置 completer 以使用而不是当前补全器。若 completer is 0, auto completion is disabled.

默认情况下,对于可编辑组合框, QCompleter 自动创建不区分大小写的内联补全。

该函数在 Qt 4.2 引入。

另请参阅 completer ().

[slot] void QComboBox:: setEditText (const QString & text )

设置 text 在组合框的文本编辑。

void QComboBox:: setItemData ( int index , const QVariant & value , int role = Qt::UserRole)

设置数据 role 为项在给定 index 在组合框到指定 value .

另请参阅 itemData ().

void QComboBox:: setItemDelegate ( QAbstractItemDelegate * delegate )

设置项 delegate 为弹出列表视图。组合框拥有委托的所有权。

警告: 不应该在组合框、Widget 映射器或视图之间共享同一委托实例。这样做会导致不正确或不直观的编辑行为,由于连接到给定委托的每个视图可能接收 closeEditor() 信号,且试图访问、修改或关闭已关闭的编辑器。

另请参阅 itemDelegate ().

void QComboBox:: setItemIcon ( int index , const QIcon & icon )

设置 icon 为项在给定 index 在组合框。

另请参阅 itemIcon ().

void QComboBox:: setItemText ( int index , const QString & text )

设置 text 为项在给定 index 在组合框。

另请参阅 itemText ().

void QComboBox:: setLineEdit ( QLineEdit * edit )

设置行 edit 以代替使用当前行编辑 Widget。

组合框拥有行编辑的所有权。

另请参阅 lineEdit ().

void QComboBox:: setModel ( QAbstractItemModel * model )

将模型设为 model . model must not be 0. If you want to clear the contents of a model, call clear ().

另请参阅 model () 和 clear ().

void QComboBox:: setRootModelIndex (const QModelIndex & index )

设置根模型项 index 为组合框项。

另请参阅 rootModelIndex ().

void QComboBox:: setValidator (const QValidator * validator )

设置 validator 以代替当前使用的验证器。

另请参阅 validator ().

void QComboBox:: setView ( QAbstractItemView * itemView )

将组合框弹出所用视图设为给定 itemView 。组合框拥有视图的所有权。

注意:若想要使用方便视图 (像 QListWidget , QTableWidget or QTreeWidget ),确保调用 setModel () 在组合框采用方便 Widget 模型,在调用此函数之前。

另请参阅 view ().

[virtual protected] void QComboBox:: showEvent ( QShowEvent * e )

重实现自 QWidget::showEvent ().

[虚拟] void QComboBox:: showPopup ()

Displays the list of items in the combobox. If the list is empty then the no items will be shown.

若重实现此函数以展示自定义弹出,确保调用 hidePopup () 去重置内部状态。

另请参阅 hidePopup ().

[虚拟] QSize QComboBox:: sizeHint () const

重实现自 QWidget::sizeHint ().

此实现缓存大小提示以避免重置大小,当内容动态改变时。要使缓存值无效,改变 sizeAdjustPolicy .

const QValidator * QComboBox:: validator () const

返回用于约束组合框文本输入的验证器。

另请参阅 setValidator () 和 editable .

QAbstractItemView * QComboBox:: view () const

返回用于组合框弹出的列表视图。

另请参阅 setView ().

[virtual protected] void QComboBox:: wheelEvent ( QWheelEvent * e )

重实现自 QWidget::wheelEvent ().