Qt应用开发(基础篇)——QComboBox

news/2024/11/29 9:52:45/

目录

一、前言      

二、属性和方法

三、信号


一、前言      

         QComboBox继承于QWidget,作为Qt Wdiget常用的控件,在实际开发中,经常用来作为某些特定参数属性的选择,比如语言国家字体主题模式串口号波特率等选择性已知的场景。

        QComboBox是一种显示列表选项的控件,占用屏幕最小。列表内容可以是图像或者字符串,列表内容可以是固定也可以是可编辑的。在应用中可随时做插入删除的动态操作,通过信号获取状态的改变。

二、属性和方法

1、count属性保存当前下拉列表的总条数,没有则是0。

 int count() const //当前下拉列表总条数

2、currentIndex属性保存当前列表的显示下标,从0开始。如果下拉框是空的,那么此值为-1。

int currentIndex() const            //当前下拉框显示的列表值的下标
void setCurrentIndex(int index)     //设置下拉框显示的列表值的下标

 3、currentText属性保存当前显示的文本。

QString currentText() const                //返回当前显示的文本
void setCurrentText(const QString &text)   //设置当前显示的文本

4、duplicatesEnabled属性保存是否列表插入重复的数据,默认为false。

bool duplicatesEnabled() const           //获取是否可以插入重复项
void setDuplicatesEnabled(bool enable)   //设置是否可以插入重复项

5、editable属性保存是否可编辑,默认值为false。

 bool isEditable() const            //获取是否可编辑void setEditable(bool editable)    //设置是否可编辑

6、frame属性保存下拉框是否使用边框绘制。

bool hasFrame() const    //获取是否有边框
void setFrame(bool)      //设置是否有边框

7、iconSize属性保存组合框显示的图标大小,添加列表项的时候可以同时设置icon路径。

QSize iconSize() const        //获取图标尺寸
void setIconSize(const QSize &size)    //设置图标尺寸
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())    //添加列表项,显示文本和自定义数据
QIcon itemIcon(int index) const    //获取图标

8、insertPolicy属性保存组合框插入策略,默认新插入的为最后一项。

QComboBox::InsertPolicy insertPolicy() const           //获取插入策略
void setInsertPolicy(QComboBox::InsertPolicy policy)    //设置插入策略1) QComboBox::NoInsert                //不会被插入
2) QComboBox::InsertAtTop             //当做第一项插入
3) QComboBox::InsertAtCurrent         //当前项被替换
4) QComboBox::InsertAtBottom          //当做最后一项插入
5) QComboBox::InsertAfterCurrent      //插入到当前项之后
6) QComboBox::InsertBeforeCurrent     //插入到当前项之前
7) QComboBox::InsertAlphabetically    //字符串按照字母顺序插入到组合框中

9、maxCount保存组合框下拉列表最大支持条数。

 int maxCount() const            //获取最大条数void setMaxCount(int max)       //设置最大条数

10、maxVisibleItems保存屏幕下拉显示的最大条数,默认10条。

int maxVisibleItems() const          //获取显示最大条数
void setMaxVisibleItems(int maxItems)//设置显示最大条数

11、minimumContentsLength属性保存组合框中应容纳的最小字符数,默认为0。

int minimumContentsLength() const                //获取最小字符数
void setMinimumContentsLength(int characters)    //设置最小字符数

12、sizeAdjustPolicy属性保存尺寸调整策略,出于性能考虑,大模型才考虑使用此方法。

QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const    //获取策略
void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy) //设置策略
1) QComboBox::AdjustToContents             //组合框将始终根据内容进行调整
2) QComboBox::AdjustToContentsOnFirstShow  //组合框将在第一次显示时调整到它的内容。
3) QComboBox::AdjustToMinimumContentsLengthWithIcon //组合框将调整到最小宽度加图标距离

13、userData下拉表项绑定自定义数据。

void addItem(const QString &text, const QVariant &userData = QVariant()) //插入一列,可选是否附带自定义数据
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 //根据列表文本查找

        在实际应用中,给每一项添加自定义数据是很常用的,比如需要显示各个国家的下拉框,分别有中国、美国、英国。他们代表的值分别为5、6、7,就需要addItem的时候绑定每个文本代表的自定义数据值,当我们从通讯得到了6,通过findData去找到绑定的数据得到下标,从而让下拉框显示美国。

QComboBox *box = new QComboBox(this);
box->addItem("中国",5);
box->addItem("美国",6);
box->addItem("英国",7);
int idx = box->findData(6);
box->setCurrentIndex(idx);

三、信号

        实际应用中,我们会需要根据下拉项的变化做一些联动或者数据上的改变,信号获取由文本变化currentTextChanged或者currentIndexChanged来相应处理,当你需要区分是否是用户主动选择改变则使用activated和textActivated。

信号: 
void activated(int index)                    //用户主动改变当前项触发
void textActivated(const QString &text)      //用户主动改变当前项触发
void currentTextChanged(const QString &text) //当前文本改变同步触发此信号
void currentIndexChanged(int index)          //当下标改变的时候此信号同步触发
void editTextChanged(const QString &text)    //编辑模式下内容改变触发
void highlighted(int index)                  //用户改变高亮项触发

http://www.ppmy.cn/news/979137.html

相关文章

【雕爷学编程】Arduino动手做(87)---ULN2003步进电机模组2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Elasticsearch 映射Mappings (三)

文章目录 前言一、Mapping简介查看索引映射 二、自动映射 dynamic mapping自动类型推断mapping注意点 三、手动映射 Expllicit mapping创建索引 四、自动映射模板 Dynamic Templates定义映射模板规则判定&#xff1a;conditlonsmatch_mapping_typematch、unmatchpath_match、pa…

华为战略方法论:BLM模型之关键任务与依赖关系

内容简介 在 BLM 模型中&#xff0c;执行部分包括四个模块&#xff0c;分别是&#xff1a; 关键任务与依赖关系&#xff1b;组织与绩效&#xff1b;人才&#xff1b;氛围与文化。 详细内容&#xff0c;大家可以参看下面这张图。 这四个模块其实是可以进一步划分成两个关键点…

fpga--流水灯

fpga流水灯的设计 思路&#xff1a;外部时钟频率50mhz&#xff0c;若要实现每隔0.5s闪烁一次&#xff0c;则使用内部计数器计数到24999999拉高一个周期电平&#xff0c;当电平被拉高的时候&#xff0c;进行LED灯电平的设置&#xff0c;每次检测到高电平&#xff0c;就进行一位…

顺序表操作详解

文章目录 一、线性表二、顺序表1、概念2、接口实现1>初始化顺序表2>操作结束后释放空间3>打印顺序表4>尾插5>头插6>头删7>尾删8>顺序表查找9>顺序表在pos位置插入x10>顺序表删除pos位置的值 一、线性表 线性表&#xff08;linear list&#xff0…

如何在Java中操作Redis(使用Jedis和Spring Data Redis来操作Redis)

在Java中操作Redis 在Java中&#xff0c;我们可以使用Jedis和Spring Data Redis来操作Redis。 一、使用Jedis操作Redis Jedis是一个流行的Java Redis客户端&#xff0c;提供了丰富的API来操作Redis。下面是使用Jedis操作Redis的步骤&#xff1a; 添加依赖 <dependency>…

PHP 基础知识全解析

PHP&#xff0c;全称 "Hypertext Preprocessor"&#xff0c;是一种流行的通用开源脚本语言&#xff0c;特别适合于 web 开发。下面是一篇深入介绍 PHP 基础知识的文章。 一、PHP 简介 PHP 是服务器端的脚本语言&#xff0c;它可以嵌入到 HTML 中去&#xff0c;用于创…

2、nacos 2.1.0注册中心原理及源码分析

一、为什么有这课程 Spring Cloud Alibaba 新版本中Seata 1.5.2和Nacos 2.1.0 在性能和使用方面都有很大提升&#xff0c;这节课将从使用和源码的角度详细讲解这两个框架。 二、设计注册中心 1、分布式框架的注意点&#xff1a;三高架构 高可用 高可用性&#xff08;High Av…