Qt入门系列开发教程【基础控件篇】QComboBox下拉框

举报
鱼酱 发表于 2022/02/25 13:10:57 2022/02/25
【摘要】 效果图 描述QComboBox 提供了一种以占用最少屏幕空间的方式向用户呈现选项列表的方法。组合框是显示当前项目的选择小部件,并且可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。组合框可以包含像素图和字符串; insertItem() 和 setItemText() 函数被适当地重载。对于可编辑的组合框,提供了 clearEditText() 函数,用于在不更改组...

效果图

在这里插入图片描述

描述

QComboBox 提供了一种以占用最少屏幕空间的方式向用户呈现选项列表的方法。
组合框是显示当前项目的选择小部件,并且可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。
组合框可以包含像素图和字符串; insertItem() 和 setItemText() 函数被适当地重载。对于可编辑的组合框,提供了 clearEditText() 函数,用于在不更改组合框内容的情况下清除显示的字符串。

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

当用户在可编辑的组合框中输入新字符串时,小部件可能会插入也可能不会插入它,并且它可以将其插入到多个位置。默认策略是 InsertAtBottom,但您可以使用 setInsertPolicy() 更改它。

可以使用 QValidator 将输入限制为可编辑的组合框;请参阅 setValidator()。默认情况下,接受任何输入。
例如,可以使用插入函数 insertItem() 和 insertItems() 填充组合框。可以使用 setItemText() 更改项目。可以使用 removeItem() 删除项目,并且可以使用 clear() 删除所有项目。当前项的文本由 currentText() 返回,编号项的文本由 text() 返回。可以使用 setCurrentIndex() 设置当前项目。组合框中的项目数由 count() 返回;可以使用 setMaxCount() 设置最大项目数。您可以允许使用 setEditable() 进行编辑。对于可编辑的组合框,您可以使用 setCompleter() 设置自动完成,用户是否可以添加重复项通过 setDuplicatesEnabled() 设置。
QComboBox 将模型/视图框架用于其弹出列表并存储其项目。默认情况下,QStandardItemModel 存储项目,QListView 子类显示弹出列表。您可以直接访问模型和视图(使用 model() 和 view()),但 QComboBox 还提供设置和获取项目数据的函数(例如,setItemData() 和 itemText())。您还可以设置新模型和视图(使用 setModel() 和 setView())。对于组合框标签中的文本和图标,使用具有 Qt::DisplayRole 和 Qt::DecorationRole 的模型中的数据。请注意,您不能更改 view() 的 SelectionMode,例如,通过使用 setSelectionMode()。

属性

  • count : const int 
    此属性保存组合框中的项目数

  • currentData : const QVariant
    此属性保存当前项目的数据

  • currentIndex : int
    此属性保存组合框中当前项的索引。

  • currentText : QString
    当前文本

  • duplicatesEnabled : bool
    该属性保存用户是否可以在组合框中输入重复项

  • editable : bool
    该属性保存用户是否可以编辑组合框

  • frame : bool
    此属性保存组合框是否使用框架绘制自身

  • iconSize : QSize
    此属性保存组合框中显示的图标的大小。

  • insertPolicy : InsertPolicy

  • maxCount : int
    此属性保存组合框中允许的最大项目数

  • maxVisibleItems : int
    此属性保存组合框屏幕上允许的最大尺寸,以项目为单位

  • minimumContentsLength : int
    此属性包含应适合组合框的最少字符数。

  • modelColumn : int
    此属性保存模型中可见的列。

  • placeholderText : QString
    设置没有设置有效索引时显示的 placeholderText 文本

  • sizeAdjustPolicy : SizeAdjustPolicy
    此属性包含描述当内容更改时组合框的大小如何更改的策略

API

//添加item
 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
 //item数量
 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
 //插入item
 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
 //获取icon
 QIcon itemIcon(int index) const
 //获取文本
 QString itemText(int index) const
 //获取输入框
 QLineEdit *lineEdit() const
 //最大条目
 int maxCount() const
// 最大可见条目
 int maxVisibleItems() const
 //最小文本长度
 int minimumContentsLength() const
 //获取model模型
 QAbstractItemModel *model() const
 //模型列
 int modelColumn() const
 //设置没有设置有效索引时显示的 placeholderText 文本
 QString placeholderText() const
 //删除item
 void removeItem(int index)
// 根索引
 QModelIndex rootModelIndex() const
 //设置合成器
 void setCompleter(QCompleter *completer)
// 开启重复项功能
 void setDuplicatesEnabled(bool enable)
 //设置可编辑功能
 void setEditable(bool editable)
 //设置边框
 void setFrame(bool)
 //设置icon
 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)
 //设置icon
 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)
 //设置模型
 virtual void setModel(QAbstractItemModel *model)
 //设置列数
 void setModelColumn(int visibleColumn)
//设置没有设置有效索引时显示的 placeholderText 文本
 void setPlaceholderText(const QString &placeholderText)
 //设置根modelindex
 void setRootModelIndex(const QModelIndex &index)
 //设置大小调整规则
 void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy)
 //设置正则对象
 void setValidator(const QValidator *validator)
 //将要在组合框弹出窗口中使用的视图设置为给定的 itemView。 组合框拥有视图的所有权。
 void setView(QAbstractItemView *itemView)

 virtual void showPopup()
 //获取大小规则
 QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const
 //获取正则对象
 const QValidator *validator() const
 QAbstractItemView *view() const

公有槽

清空combobox删除所有item
 void clear()
 删除内容lineedite对于combobox
 void clearEditText()
 设置当前索引
 void setCurrentIndex(int index)
 设置当前文本
 void setCurrentText(const QString &text)
 设置可编辑文本
 void setEditText(const QString &text)

信号

当用户在组合框中选择一个项目时发送此信号。
 void activated(int index)
 每当组合框中的 currentIndex 通过用户交互或以编程方式更改时,都会发送此信号。 如果组合框为空或 currentIndex 已重置,则传递项目的索引或 -1void currentIndexChanged(int index)
 每当 currentText 更改时都会发送此信号。 新值作为文本传递。
 void currentTextChanged(const QString &text)
 当组合框的行编辑小部件中的文本发生更改时,将发出此信号。 新文本由文本指定。
 void editTextChanged(const QString &text)
 当用户突出显示组合框弹出列表中的项目时发送此信号。 项目的索引被传递。
 void highlighted(int index)
 当用户在组合框中选择一个项目时发送此信号
 void textActivated(const QString &text)
 当用户突出显示组合框弹出列表中的项目时发送此信号。 项目的文本被传递。
 void textHighlighted(const QString &text)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。