当前位置:网站首页 > 技术博客 > 正文

qt下拉框设置下拉列表



QComboBox是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当做一个QLineEdit用作输入QComboBox除了显示可见下拉列表外,每个Item还可以关联一个QVariant类型变量,用于存储一些不可见的数据

samp4_6演示QComboBoxQPlainTextEdit(后者以后会讲)的使用,运行时界面如下图所示:

QComboBox的主要功能是提供一个下拉列表选择输入。在界面上放置一个QComboBox组件后,双击此组件,可以出现如下图所示对话框,对QComboBox组件的下拉列表项进行编辑。在下图所示的对话框中,可以进行如添加、删除、上移、下移操作,还可以设置Item的图标:

添加一个项时,可以指定一个图标,图标来源于资源文件

addItem()用于添加一个Item,如果只是添加一个QString Item,而且数据来源于一个QStringList变量,可以使用addItems()函数,示例代码如下:

添加具有用户数据ItemQComboBox::addItem()函数的两种参数原型定义如下:

不管是哪个addItem()函数,后面都有一个可选的QVariant类型的参数userData,可以利用这个变量存储用户定义的数据

界面上另一个ComboBox组件使用了用户数据,“初始化城市 + 区号”按钮的槽函数代码如下:

这里定义了一个QMap<QString , int>City_Zone,用于存储<城市,区号> Map。为City_Zone填充数据后,给comboBox2添加Item时,使用了foreach关键字遍历City_Zone.keys()。添加Item的语句如下:

城市名称作为Item显示的QString电话区号作为关联的用户数据,但是在List中只能看到城市名称

需要注意的是,将City_Zone的内容添加到List之后,List中显示的Item顺序与源程序中设置的City_Zone顺序不一致,因为QMap<Key,T>会自动按照Key排序

QComboBox存储的Item是一个List,但是QComboBox不提供整个List用于访问,可以通过索引访问某个Item。访问Item的一些函数主要有以下几种:

  • int currentIndex():返回当前Item的Index,第一项的Index是0
  • QString currentText():返回当前Item的Text
  • QVariant currentData( int role = Qt::UserRole ):返回当前Item的关联Data,第二个参数是角色,将在以后介绍
  • QString itemText( int index ):返回指定index的Text
  • QVariant itemData( int index , int role = QT::UserRole )返回指定index的关联Data

在一个QComboBox组件上所选的Item发生变化时,会发生如下两个信号:

这两个信号只是传递的参数不同,一个是当前ItemIndex,另一个是当前ItemText

为了使用方便,选择为currentIndexChanged( QString text )信号编写槽函数。窗体上只在PlainText中显示comboBoxItem ListQString Text的槽函数代码如下:

关联有城市区号的comboBox2的槽函数代码如下:

  • 上一篇: ev3编程指南
  • 下一篇: java迭代器的原理
  • 版权声明


    相关文章:

  • ev3编程指南2025-08-31 07:30:02
  • exchange思维导图2025-08-31 07:30:02
  • 数据泵导入dmp文件语句2025-08-31 07:30:02
  • opencasecade occ2025-08-31 07:30:02
  • 单个队列训练七个内容顺序2025-08-31 07:30:02
  • java迭代器的原理2025-08-31 07:30:02
  • maven中clean和install2025-08-31 07:30:02
  • c++线程之间同步2025-08-31 07:30:02
  • monkey测试常用的命令2025-08-31 07:30:02
  • w25q64(STM32通过SPI软件读写W25Q64)2025-08-31 07:30:02