本页内容

QComboBox Class

QComboBox 控件将按钮与下拉列表结合在一起。更多内容...

标题: #include <QComboBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QWidget
被继承者:

QFontComboBox

公共类型

enum InsertPolicy { NoInsert, InsertAtTop, InsertAtCurrent, InsertAtBottom, InsertAfterCurrent, …, InsertAlphabetically }
(since 6.9) enum class LabelDrawingMode { UseStyle, UseDelegate }
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLengthWithIcon }

属性

公共函数

QComboBox(QWidget *parent = nullptr)
virtual ~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
QVariant currentData(int role = Qt::UserRole) 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 = 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)
QComboBox::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
QComboBox::LabelDrawingMode labelDrawingMode() const
QLineEdit *lineEdit() const
int maxCount() const
int maxVisibleItems() const
int minimumContentsLength() const
QAbstractItemModel *model() const
int modelColumn() const
QString placeholderText() 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(QComboBox::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 setLabelDrawingMode(QComboBox::LabelDrawingMode labelDrawing)
void setLineEdit(QLineEdit *edit)
void setMaxCount(int max)
void setMaxVisibleItems(int maxItems)
void setMinimumContentsLength(int characters)
virtual void setModel(QAbstractItemModel *model)
void setModelColumn(int visibleColumn)
void setPlaceholderText(const QString &placeholderText)
void setRootModelIndex(const QModelIndex &index)
void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy)
void setValidator(const QValidator *validator)
void setView(QAbstractItemView *itemView)
virtual void showPopup()
QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const
const QValidator *validator() const
QAbstractItemView *view() const

重新实现的公共函数

virtual bool event(QEvent *event) override
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

公共插槽

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

信号

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

受保护函数

virtual void initStyleOption(QStyleOptionComboBox *option) const

重新实现的受保护函数

virtual void changeEvent(QEvent *e) override
virtual void contextMenuEvent(QContextMenuEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void hideEvent(QHideEvent *e) override
virtual void inputMethodEvent(QInputMethodEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *e) override
virtual void resizeEvent(QResizeEvent *e) override
virtual void showEvent(QShowEvent *e) override
virtual void wheelEvent(QWheelEvent *e) override

详细说明

带有折叠选项列表的下拉列表框

折叠的 QCombobox

带有展开选项列表的下拉列表框

展开的 QCombobox

显示特性

QComboBox 是一种向用户展示选项列表的紧凑方式。

下拉列表是一种选择控件,它会显示当前项目,并在点击时弹出可选项目列表。如果适当重载了insertItem()和setItemText()函数,下拉列表不仅可以包含字符串,还可以包含位图。

编辑功能

下拉列表可能支持编辑,允许用户修改列表中的每个项目。对于可编辑的下拉列表,提供了clearEditText() 函数,用于清除显示的字符串而不改变下拉列表的实际内容。

当用户在可编辑下拉列表中输入新字符串时,控件可能插入该字符串,也可能不插入,且可将其插入多个位置。默认策略为 `InsertAtBottom `,但您可以通过 `setInsertPolicy()` 进行更改。

可以使用QValidator 对可编辑下拉列表的输入进行限制;请参阅setValidator()。默认情况下,任何输入都会被接受。

可通过插入函数(例如insertItem() 和insertItems())为下拉列表填充数据。 可通过setItemText() 修改项目。可通过removeItem() 删除单个项目,通过clear() 删除所有项目。当前项目的文本由currentText() 返回,带编号项目的文本由 text() 返回。可通过setCurrentIndex() 设置当前项目。 下拉列表中的项目数量可通过count() 获取;最大项目数量可通过setMaxCount() 设置。可通过setEditable() 启用编辑功能。对于可编辑的下拉列表,可通过setCompleter() 设置自动完成功能,并可通过setDuplicatesEnabled() 设置是否允许用户添加重复项。

信号

当下拉列表的当前选项发生变化时,会触发三个信号:currentIndexChanged()、currentTextChanged() 和activated()。无论更改是通过编程方式还是用户交互完成的,currentIndexChanged() 和currentTextChanged() 都会被触发,而activated() 仅在更改由用户交互引起时才会被触发。 当用户在下拉列表的弹出列表中选中某项时,会发出highlighted() 信号。 这三个信号各有两个版本,一个带有QString 参数,另一个带有int 参数。如果用户选择或高亮显示了一张位图,则仅会发出int 信号。每当可编辑下拉列表的文本发生更改时,都会发出editTextChanged()信号。

模型/视图框架

QComboBox 使用模型/视图框架来管理其弹出列表并存储项目。默认情况下,QStandardItemModel 负责存储项目,而QListView 的子类则负责显示弹出列表。 您可以直接访问模型和视图(通过model() 和view()),但 QComboBox 还提供了用于设置和获取项目数据的函数,例如setItemData() 和itemText()。 您还可以设置新的模型和视图(使用setModel() 和setView())。对于下拉框标签中的文本和图标,将使用模型中Qt::DisplayRole 和Qt::DecorationRole 对应的数据。

注意:您 无法更改view()的SelectionMode ,例如通过使用setSelectionMode()。

另请参阅 QLineEdit 、QSpinBox 、QRadioButton 和QButtonGroup 。

成员类型文档

enum QComboBox::InsertPolicy

此枚举指定当用户输入新字符串时,QComboBox 应执行什么操作。

常量值描述
QComboBox::NoInsert0该字符串不会被插入到组合框中。
QComboBox::InsertAtTop1该字符串将作为组合框中的第一个项目插入。
QComboBox::InsertAtCurrent2当前项目将被该字符串替换。
QComboBox::InsertAtBottom3该字符串将插入到组合框的最后一个项目之后。
QComboBox::InsertAfterCurrent4该字符串将插入到组合框中当前项之后。
QComboBox::InsertBeforeCurrent5该字符串将插入到组合框中当前项目的前面。
QComboBox::InsertAlphabetically6该字符串将按字母顺序插入组合框中。

[since 6.9] enum class QComboBox::LabelDrawingMode

此枚举指定下拉列表如何绘制其标签。

常量值描述
QComboBox::LabelDrawingMode::UseStyle0下拉列表框使用style 来绘制其标签。
QComboBox::LabelDrawingMode::UseDelegate1下拉列表使用item delegate 来绘制标签。使用此模式时,请设置一个合适的项委托。

该枚举在 Qt 6.9 中引入。

另请参阅 ` labelDrawingMode `及“Books”示例。

enum QComboBox::SizeAdjustPolicy

此枚举指定了当添加新内容或内容发生变化时,QComboBox 的大小提示应如何调整。

常量值描述
QComboBox::AdjustToContents0下拉列表框将始终根据内容进行调整
QComboBox::AdjustToContentsOnFirstShow1下拉列表将在首次显示时根据其内容进行调整。
QComboBox::AdjustToMinimumContentsLengthWithIcon2下拉列表将调整为minimumContentsLength ,并预留图标空间。出于性能考虑,请在大型模型上使用此策略。

属性文档

[read-only] count : int

该属性存储下拉列表中的项目数量。

默认情况下,对于空的下拉列表框,该属性的值为 0。

访问函数:

int count() const

[read-only] currentData : QVariant

该属性存储当前项目的数据

默认情况下,对于空的下拉列表框或未设置当前项的下拉列表框,该属性包含一个无效的QVariant 。

Access 函数:

QVariant currentData(int role = Qt::UserRole) const

currentIndex : int

该属性保存了组合框中当前项的索引。

在插入或删除项目时,当前索引可能会发生变化。

默认情况下,对于空的下拉列表框或未设置当前项的下拉列表框,该属性的值为 -1。

访问函数:

int currentIndex() const
void setCurrentIndex(int index)

通知信号:

void currentIndexChanged(int index)

currentText : QString

该属性存储当前文本

如果下拉列表框可编辑,则当前文本即为单行编辑框中显示的值。否则,它为当前项的值;若下拉列表框为空或未设置当前项,则为空字符串。

如果下拉列表可编辑,setCurrentText() 设置器仅调用setEditText()。否则,如果列表中存在匹配的文本,则将currentIndex 设置为对应的索引。

访问函数:

QString currentText() const
void setCurrentText(const QString &text)

通知器信号:

void currentTextChanged(const QString &text)

另请参阅 editable 和setEditText()。

duplicatesEnabled : bool

该属性控制用户是否可以在下拉列表中输入重复的项目。

请注意,始终可以通过编程方式将重复项插入组合框。

默认情况下,此属性的值为false (不允许重复项)。

访问函数:

bool duplicatesEnabled() const
void setDuplicatesEnabled(bool enable)

editable : bool

该属性用于确定用户是否可以编辑下拉列表框。

默认情况下,该属性为false 。编辑效果取决于插入策略。

注意:当禁用 editable 状态时,验证器和补全器将被移除。

访问函数:

bool isEditable() const
void setEditable(bool editable)

另请参阅 InsertPolicy 。

frame : bool

该属性控制下拉列表框是否带边框显示。

如果启用(默认值),下拉列表框会在框架内显示;否则,下拉列表框将不显示任何框架。

访问函数:

bool hasFrame() const
void setFrame(bool)

iconSize : QSize

该属性用于指定组合框中显示的图标大小。

除非显式设置,否则该属性将返回当前样式的默认值。此大小是图标的最大尺寸;小于该尺寸的图标不会被放大。

访问函数:

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

insertPolicy : InsertPolicy

此属性存储用于确定用户插入的项目应出现在下拉列表中的哪个位置的策略。

默认值为InsertAtBottom ,表示新项目将显示在项目列表的末尾。

访问函数:

QComboBox::InsertPolicy insertPolicy() const
void setInsertPolicy(QComboBox::InsertPolicy policy)

另请参阅 InsertPolicy 。

[since 6.9] labelDrawingMode : LabelDrawingMode

此属性用于指定下拉列表绘制其标签时所使用的模式。

默认值为UseStyle 。将此属性更改为UseDelegate 时,请务必同时设置一个合适的item delegate 。默认委托取决于样式,可能不适合绘制标签。

该枚举在 Qt 6.9 中引入。

访问函数:

QComboBox::LabelDrawingMode labelDrawingMode() const
void setLabelDrawingMode(QComboBox::LabelDrawingMode labelDrawing)

另请参阅 Books 示例。

maxCount : int

此属性用于指定下拉列表中允许的最大项目数量。

注意:若 将最大项数设置为小于组合框中当前的项数,则多余的项将被截断。如果已在组合框上设置了外部模型,此规则同样适用。

默认情况下,此属性的值取自可用的最大有符号整数(通常为 2147483647)。

访问函数:

int maxCount() const
void setMaxCount(int max)

maxVisibleItems : int

该属性指定组合框在屏幕上允许显示的最大项目数,单位为项目

默认情况下,该属性的值为 10。

注意: 对于在QStyle::SH_ComboBox_Popup 返回true的样式(如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。

注意:在 可编辑的下拉列表框中 ,可见列也将成为completion column 。

访问函数:

int modelColumn() const
void setModelColumn(int visibleColumn)

placeholderText : QString

设置当未设置有效索引时显示的placeholderText 文本。

当设置了无效索引时,将显示该placeholderText 。在下拉列表中无法访问该文本。如果在添加项目之前调用此函数,将显示占位符文本;否则,若需显示占位符文本,则必须通过编程方式调用setCurrentIndex(-1)。设置为空的占位符文本可重置该设置。

当QComboBox 可编辑时,请改用QLineEdit::setPlaceholderText()。

访问函数:

QString placeholderText() const
void setPlaceholderText(const QString &placeholderText)

sizeAdjustPolicy : SizeAdjustPolicy

该属性存储了描述组合框在内容发生变化时其大小如何变化的策略。

默认值为AdjustToContentsOnFirstShow 。

访问函数:

QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const
void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy)

另请参阅 SizeAdjustPolicy 。

成员函数文档

[explicit] QComboBox::QComboBox(QWidget *parent = nullptr)

使用默认模型QStandardItemModel ,根据给定的parent 创建一个下拉列表框。

[virtual noexcept] QComboBox::~QComboBox()

销毁该下拉列表框。

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

当用户在下拉列表中选择一个项目时,会发送此信号。该项目的index 会被传递进来。请注意,即使选择内容未发生变化,此信号仍会被发送。若需检测选择内容实际发生变化的时刻,请使用currentIndexChanged()或currentTextChanged()信号。

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 和text ,并包含指定的userData (存储在Qt::UserRole 中)。该项目将追加到现有项目列表的末尾。

void QComboBox::addItems(const QStringList &texts)

将给定texts 中的每个字符串添加到下拉列表中。每个项目将依次追加到现有项目列表的末尾。

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

重写了:QWidget::changeEvent(QEvent *event)。

[slot] void QComboBox::clear()

清空下拉列表,移除所有项目。

注意:如果已在组合框上设置了外部模型,调用此函数时该模型仍会被清空。

[slot] void QComboBox::clearEditText()

清除用于编辑下拉列表的行编辑框中的内容。

QCompleter *QComboBox::completer() const

返回用于为下拉列表框的文本输入提供自动完成功能的自动完成组件。

另请参阅 setCompleter() 和editable 。

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

重写了:QWidget::contextMenuEvent(QContextMenuEvent *event)。

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

每当组合框中的currentIndex 因用户交互或程序操作而发生变化时,都会发送此信号。该项的index 会被传递;如果组合框变为空状态,或者currentIndex 被重置,则传递-1。

注意: 这是属性currentIndex 的Notifier 信号。

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

每当currentText 发生变化时,都会触发此信号。新值将作为text 传递。

注意: 如果currentText 保持不变,即使currentIndex 发生了变化,该信号 也不会被触发。

注意: 这是属性currentText 的通知器 信号。

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

当下拉列表中的行编辑控件中的文本发生变化时,会触发此信号。新文本由text 指定。

[override virtual] bool QComboBox::event(QEvent *event)

重写了:QWidget::event(QEvent *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。

flags 指定了组合框中项目的搜索方式。

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

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

flags 指定了如何搜索组合框中的项目。

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

重写了:QWidget::focusInEvent(QFocusEvent *event)。

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

重写了:QWidget::focusOutEvent(QFocusEvent *event)。

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

重写了:QWidget::hideEvent(QHideEvent *event)。

[virtual] void QComboBox::hidePopup()

如果下拉列表当前可见,则隐藏其中的项目列表并重置内部状态,这样,如果在重写的showPopup()方法中显示了自定义弹出窗口, 那么你还需要重写 hidePopup() 函数,以隐藏自定义弹出窗口,并在自定义弹出窗口小部件被隐藏时,调用基类的实现来重置内部状态。

另请参阅 showPopup()。

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

当用户选中下拉列表中的某个项目时,会触发此信号。此时会传递该项目的index 属性。

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

使用QComboBox 中的值初始化option 。当子类需要QStyleOptionComboBox 时,但又不想自己填写所有信息,此方法非常有用。

另请参阅 QStyleOption::initFrom()。

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

重写了:QWidget::inputMethodEvent(QInputMethodEvent *event)。

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

重写了:QWidget::inputMethodQuery (Qt::InputMethodQuery query)const。

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

将text 和userData (存储在Qt::UserRole 中)插入到位于指定index 处的下拉列表中。

如果索引值等于或大于项目总数,则新项目将追加到现有项目列表的末尾。如果索引值为零或负数,则新项目将插入到现有项目列表的开头。

另请参阅 insertItems()。

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

将icon 、text 和userData (存储在Qt::UserRole 中)插入到位于指定index 处的下拉列表中。

如果索引值等于或大于项目总数,则将新项目追加到现有项目列表的末尾。如果索引值为零或负数,则将新项目插入到现有项目列表的开头。

另请参阅 insertItems()。

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

将list 中的字符串作为独立项目插入到组合框中,从指定的index 开始。

如果索引值等于或大于项目总数,则新项目将追加到现有项目列表的末尾。如果索引值为零或负数,则新项目将插入到现有项目列表的开头。

另请参阅 insertItem()。

void QComboBox::insertSeparator(int index)

将一个分隔项插入到组合框中,位置为给定的index 。

如果索引值等于或大于项目总数,则新项目将追加到现有项目列表的末尾。如果索引值为零或负数,则新项目将插入到现有项目列表的开头。

另请参阅 insertItem()。

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

返回下拉列表中给定role 在给定index 中的数据,如果该角色没有数据,则返回无效的QVariant 。

另请参阅 setItemData()。

QAbstractItemDelegate *QComboBox::itemDelegate() const

返回弹出式列表视图所使用的项目委托。

另请参阅 setItemDelegate()。

QIcon QComboBox::itemIcon(int index) const

返回下拉列表中给定index 对应的图标。

另请参阅 setItemIcon()。

QString QComboBox::itemText(int index) const

返回下拉列表中给定index 对应的文本。

另请参阅 setItemText()。

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

重写了:QWidget::keyPressEvent(QKeyEvent *event)。

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

重写了:QWidget::keyReleaseEvent(QKeyEvent *event)。

QLineEdit *QComboBox::lineEdit() const

返回用于编辑组合框中项目的行编辑控件,如果不存在行编辑控件,则返回nullptr 。

只有可编辑的下拉列表才具有行编辑控件。

另请参阅 setLineEdit()。

[override virtual] QSize QComboBox::minimumSizeHint() const

重新实现了属性QWidget::minimumSizeHint 的访问函数。

QAbstractItemModel *QComboBox::model() const

返回下拉列表所使用的模型。

另请参阅 setModel()。

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

重写了:QWidget::mousePressEvent(QMouseEvent *event)。

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

重写了:QWidget::mouseReleaseEvent(QMouseEvent *event)。

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

重写了:QWidget::paintEvent(QPaintEvent *event)。

void QComboBox::removeItem(int index)

从下拉列表中移除位于指定index 处的项目。如果该索引被移除,则会更新当前索引。

如果index 超出范围,则此函数不执行任何操作。

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

重写了:QWidget::resizeEvent(QResizeEvent *event)。

QModelIndex QComboBox::rootModelIndex() const

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

另请参阅 setRootModelIndex()。

void QComboBox::setCompleter(QCompleter *completer)

设置要使用的completer ,以替换当前的自动补全器。如果completer 的值为nullptr ,则自动补全功能将被禁用。

默认情况下,对于可编辑的下拉列表框,系统会自动创建一个支持不区分大小写内联补全的QCompleter 。

注意: 当editable 属性变为false 时,或者通过调用setLineEdit() 替换行编辑控件时,补全器 将被移除。对不可编辑的QComboBox 设置补全器将被忽略。

另请参阅 completer()。

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

将text 设置为组合框的文本编辑框中的内容。

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

将组合框中给定index 上的项的数据role 设置为指定的value 。

另请参阅 itemData()。

void QComboBox::setItemDelegate(QAbstractItemDelegate *delegate)

为弹出式列表视图设置项delegate 。下拉列表将接管该委托。

任何现有的委托对象都将被移除,但不会被删除。QComboBox 不会接管delegate 的所有权。

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

另请参阅 itemDelegate()。

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

将下拉列表中指定位置(index )的项的icon 属性设置为指定值。

另请参阅 itemIcon()。

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

将下拉列表中指定index 上的项的text 属性设置为指定值。

另请参阅 itemText()。

void QComboBox::setLineEdit(QLineEdit *edit)

设置要使用的行编辑控件(edit ),以替代当前的行编辑控件。

下拉列表将接管该行编辑控件的所有权。

注意:由于 下拉列表的行编辑控件拥有QCompleter ,因此之前对setCompleter()的任何调用都将不再生效。

另请参阅 lineEdit()。

[virtual] void QComboBox::setModel(QAbstractItemModel *model)

将模型设置为model 。model 不能是nullptr 。若要清空模型的内容,请调用clear()。

注意:如果 下拉列表框可编辑,则行编辑框的补全器也将设置为model 。

另请参阅 model()、clear() 和setCompleter()。

void QComboBox::setRootModelIndex(const QModelIndex &index)

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

另请参阅 rootModelIndex()。

void QComboBox::setValidator(const QValidator *validator)

设置要使用的validator ,以替换当前的验证器。

注意: 当editable 属性变为false 时,该 验证器将被移除。

另请参阅 validator()。

void QComboBox::setView(QAbstractItemView *itemView)

将下拉列表弹出窗口中使用的视图设置为给定的itemView 。下拉列表将拥有该视图的所有权。

注意:若要使用便捷视图(如QListWidget 、QTableWidget 或QTreeWidget ),请务必在调用此函数之前,对组合框调用setModel() 并传入便捷控件模型。

另请参阅 view()。

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

重写了:QWidget::showEvent(QShowEvent *event)。

[virtual] void QComboBox::showPopup()

显示下拉列表中的项目列表。如果列表为空,则不会显示任何项目。

如果您重写此函数以显示自定义弹出窗口,请确保调用hidePopup()来重置内部状态。

另请参阅 hidePopup()。

[override virtual] QSize QComboBox::sizeHint() const

重新实现了属性QWidget::sizeHint 的访问函数。

此实现会缓存大小提示,以避免在内容动态变化时重新调整大小。若要使缓存值失效,请修改sizeAdjustPolicy 。

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

当用户在下拉列表中选择一个项目时,会发送此信号。该项目的text 会被传递进来。请注意,即使选择内容未发生变化,该信号仍会发送。若需知道选择内容何时实际发生变化,请使用currentIndexChanged()或currentTextChanged()信号。

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

当用户选中下拉列表中的某个项目时,会触发此信号。此时会传递该项目的text 属性。

const QValidator *QComboBox::validator() const

返回用于限制下拉列表文本输入的验证器。

另请参阅 setValidator() 和editable 。

QAbstractItemView *QComboBox::view() const

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

另请参阅 setView()。

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

重写了:QWidget::wheelEvent(QWheelEvent *event)。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.