Qt入门系列开发教程【基础控件篇】QComboBox下拉框
效果图
描述
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 已重置,则传递项目的索引或 -1。
void 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)
- 点赞
- 收藏
- 关注作者
评论(0)