前言
本文主要介绍的是使用代码生成的情况下对控件的介绍,包括拥有的功能及能修改的样式,也会说明在qtdesiner拖拽控件生成和使用代码生成控件的区别(如果有的话,遇到了的会说),此版本不属于最终版本,以后遇到什么新奇的点会继续更新!本文基于QT官方的文档进行的编写,QT版本为qt 5.14.0,编写环境为Windows11。不得不说官方文档真是个好东西,有时候有些不会的上去一看就能有灵感解决了,可惜没有中文版本的。
一、QComboBox初步介绍
QComboBox也是开发过程中最常用的控件之一,称为下拉控件,非常的强大。
二、基本功能
1.创建
QComboBox* box = new QComboBox();
2.添加项
1)addItem()
添加单个项
void addItem(const QString &text, const QVariant &userData = QVariant());
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant());
2)addItems()
添加多个项
void addItems(const QStringList &texts);
3.插入项
1)insertItem()
在指定索引处插入单个项
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());
2)insertItems()
在指定索引处插入多个项
void insertItems(int index, const QStringList &list);
3)insertSeparator()
插入分隔线
void insertSeparator(int index); // 插入分隔线

4.移除项
1)removeItem()
根据索引值移除单个项
void removeItem(int index);
5.当前项操作
1)currentIndex()
获取当前项索引
int currentIndex() const;
2)setCurrentIndex()
设置当前选择项为特定索引的项
void setCurrentIndex(int index);
3)currentText()
获取当前项的文本内容
QString currentText() const;
4)setCurrentText()
设置当前选择项为特定文本的项
void setCurrentText(const QString &text); // 可编辑时使用
5)currentData()
获取当前项的Data,类似Property
QVariant currentData(int role = Qt::UserRole) const;
6.项查询、访问与限制
1)count()
获取当前ComboBox拥有的项的数量
int count() const;
2)findText()
查找文本内容为目标值的项
int findText(const QString &text, Qt::MatchFlags flags = ...) const;
3)findData()
查找Data内容为目标值的项
int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = ...) const;
4)itemText()
获取项的文本内容
QString itemText(int index) const;
5)itemIcon()
获取项的Icon
QIcon itemIcon(int index) const;
6)itemData()
获取项的Data
QVariant itemData(int index, int role = Qt::UserRole) const;
7)setItemText()
设置项的文本内容
void setItemText(int index, const QString &text);
8)setItemIcon()
设置项的Icon
void setItemIcon(int index, const QIcon &icon);
9)setItemData()
设置项的Data
void setItemData(int index, const QVariant &value, int role = Qt::UserRole);
10)maxCount()
获取QComboBox的最大项数限制,默认为int的最大正整数
int maxCount() const;
11)setMaxCount()
设置QComboBox的最大项数限制
void setMaxCount(int max);
7.视图与模型
这一块的话暂时先列出来,后面再单独出一篇来介绍M/V模型
1)view()
视图
QAbstractItemView *view() const;
2)setView()
设置视图
void setView(QAbstractItemView *itemView);
3)model()
模型
QAbstractItemModel *model() const;
4)setModel()
设置模型
void setModel(QAbstractItemModel *model);
5)modelColumn()
模型列
int modelColumn() const;
6)setModelColumn()
设置模型列
void setModelColumn(int visibleColumn);
8.扩展中。。。。
三、信号
1)currentIndexChanged
当前项索引改变触发
void currentIndexChanged(int index);
2)currentTextChanged
当前文本改变触发
void currentTextChanged(const QString &text);
3)activated
项被点击激活触发
void activated(int index);
4)textActivated
项被点击激活触发
void textActivated(const QString &text);
5)editTextChanged
项在可编辑模式下时改变文本触发
void editTextChanged(const QString &text);
6)highlighted
项被高亮触发,就是用户把鼠标悬停在项上时触发,不用点击激活
void highlighted(int index);
7)highlighted
如上,返回文本
void highlighted(const QString &text);
四、QComboBox样式
选择器
1)::drop-down
下拉箭头按钮
QComboBox::drop-down
{
background-color:red;
}
2)::down-arrow
下拉按钮上的箭头图标
QComboBox::down-arrow {
image: url(:/icons/down_arrow.png);
}
3)QAbstractItemView
下拉菜单
QComboBox QAbstractItemView
{
border: 1px solid #c0c0c0;
color:white;
background: black;
selection-background-color: #2a82da;
selection-color: white;
outline: 0; /* 禁用焦点虚线框 */
}

在开发工作中我也自定义写过一个QComboBox,为了更灵活的写样式使用了MV模型,后面会出一篇介绍这个自定义QComboBox的实现

本次分享就到这里了,如果有什么错误的话请指正,或者有什么疑问的,也可以在评论区一起探讨!
3万+

被折叠的 条评论
为什么被折叠?



