简介

QComboBox提供了一种向用户呈现选项列表的方式,以占用最少的屏幕空间。 组合框是一个显示当前项目的选择小部件,可以弹出可选择项目的列表。 组合框可以是可编辑的,允许用户修改列表中的每个项目。 QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。

效果

常用Api

添加item
两个重载addItem() 函数,第二个版本可以添加图标,两个函数都有一个可选的 QVariant 类型的参数 userData,可以利用这个变量存储用户定义数据。

void addItem (const QString &text, const QVariant &userData = QVariant())
void addItem (const QIcon &icon, const QString &text, const QVariant &userData = QVariant())

也可以在Ui设计界面添加设置item

访问QComboBox 列表项

int currentlndex():返回当前项的序号,第一个项的序号为0。
QString currentText():返回当前项的文本
QVariant currentData(int role = Qt::UserRole):返回当前项的关联数据
QString itemText(int index) 返回指定索引号的项的文本
QVariant itemData(int index, int role = Qt%:UserRole) 返回指定索引号的项的关联数据。
int count():返回项的个数。

当前项改变信号

在一个 QComboBox 组件上选择项发生变化时,会发射如下信号:

void currentIndexChanged(int index)
void currentIndexChanged(const QString &text)
void currentTextChanged(const QString &text)

注意,前两个信号为重载函数,QT5新版的信号槽语法要使用函数指针语法连接到这个信号,需要使用static_cast转换指针,如下例所示:

connect(ui->comboBox,static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),this,&Widget::onCurrentIndexChanged);connect(ui->comboBox,static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged),this,&Widget::onCurrentStringChanged);

.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//使用QStringList 一次写入多个数据QStringList strList;strList<<"jave"<<"c"<<"c#";ui->comboBox->addItems(strList);//单独添加ui->comboBox->addItem("Go");//单独添加,带图标static QIcon icon;icon.addFile("D://QtProject//QComboBox_Example//Qt_Icon.png");ui->comboBox->addItem(icon,"Qt");//单独添加,带用户数据项QString useData = QStringLiteral("Python是一种广泛使用的解释型、高级和通用的编程语言");ui->comboBox->addItem("Python",useData);connect(ui->comboBox,static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),this,[&](int index){QString currentIndex = QString("%1%2").arg(QStringLiteral("当前项索引:")).arg(index);QString currentUseData = QString("%1%2").arg(QStringLiteral("当前项用户数据:")).arg(ui->comboBox->currentData().toString());QString currentText = ui->comboBox->currentText();ui->textEdit->append(currentIndex);ui->textEdit->append(currentUseData);ui->textEdit->append(currentText);});}Widget::~Widget()
{delete ui;
}

ui布局

QComboBox使用讲解相关推荐

  1. pyqt5讲解3:QComboBox,QSpinBox,QSlider

    下拉列表框QComboBox QComboBox是一个集按钮和下拉选项于一体的控件,也称为下拉列表框. 常用的方法 addItem() 添加一个下拉选项 addItems() 从列表中添加下拉选项 C ...

  2. qcombobox 隐藏_Qt之QComboBox定制

    说起下拉框,想必大家都比较熟悉,在我们注册一些网站的时候,会出现大量的地区数据供我们选择,这个时候出现的就是下拉框列表,再比如字体选择的时候也是使用的下拉框,如图1所示.下拉框到处可见,作为一个图形库 ...

  3. python识别手写文字_Python3实现简单可学习的手写体识别(实例讲解)

    1.前言 版本:Python3.6.1 + PyQt5 + SQL Server 2012 以前一直觉得,机器学习.手写体识别这种程序都是很高大上很难的,直到偶然看到了这个视频,听了老师讲的思路后,瞬 ...

  4. Python密码器讲解

    我们今天这一篇,就来讲解这一长串代码. from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QApplication,QLineEdit,Q ...

  5. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  6. 详细通俗重点CRF层讲解

    本文翻译自GitHub博客上的原创文章,结尾有原文链接.文章没有晦涩的数学公式,而是通过实例一步一步讲解CRF的实现过程,是入门CRF非常非常合适的资料. 相关项目代码: BERT-BiLSMT-CR ...

  7. 高级数据结构讲解与案例分析

    然而,仅仅掌握好它们不足以应付大厂的算法面试的.为了达到对时间和空间复杂度的理想要求,本节课探究高级数据结构,它们的实现要比那些常用的数据结构要复杂得多.其中重点介绍: 优先队列 图 前缀树 线段树 ...

  8. php 伪静态 page-18.html,PHP 伪静态实现技术原理讲解

    PHP 伪静态实现技术原理讲解 发布于 2015-01-18 23:52:58 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pre ...

  9. ssm开发框架原理_SSM 单体框架 - 前端开发:视频讲解

    视频讲解 知乎视频​www.zhihu.com 知乎视频​www.zhihu.com 知乎视频​www.zhihu.com 知乎视频​www.zhihu.com 知乎视频​www.zhihu.com ...

  10. python计算wav的语谱图_Python实现电脑录音(含音频基础知识讲解)

    前言 今天开始进入近期系列文章的第一篇,如何用 Python 来实现录音功能. 在开始"造轮子"之前,个人一直强调一个观点,如果有些东西已经有了,不妨直接去 github 上搜,用 ...

最新文章

  1. Error:Java home supplied via 'org.gradle.java.home' is invalid
  2. Mysql的sql注入_MySQL SQL注入
  3. centos7开放端口访问不了_基于TiUP cluster 在centos7系统上模拟生产环境部署TiDB数据库...
  4. NBT | 微生物研究所王军组在AI赋能挖掘微生物组功能多肽方面获得新进展
  5. 案例解释图像傅里叶变换的幅度谱和相位谱的以及反变换
  6. Pentium II Pentium III架构/微架构/流水线 (7) - 微架构框图
  7. CSDN、sina博客在Zoundry中登记的API URL 收藏
  8. 使用PS排版制作一寸照片
  9. 掌握销售谈判三大策略,开单成功率提升60%!
  10. Simulink代码生成: MinMax模块及其代码
  11. 人生重开模拟器(未完工)
  12. 计算机开机黑屏90,终于晓得笔记本电脑开机黑屏检修步骤
  13. ext2 grid 封装 (包含增删改查 导入导出等操作)
  14. 如何判断合法的立即数
  15. python除数为0报错_浅谈pandas dataframe对除数是零的处理
  16. 马云创办阿里和蚂蚁金服如此成功,离不开大数据和人工智能的功劳
  17. uniapp开发微信小程序使用painter生成海报
  18. Boost库网络编程
  19. 通过时间管理充分利用一天24小时
  20. 试一试你就知道:做到自控和自律也不是那么难!!

热门文章

  1. python调用java之Jpype异常机制
  2. 如何查询Linux软件安装源,Zypper——suse软件查询 安装 升级 与 软件源编辑
  3. Java解压压缩包(zip/rar/7z)
  4. 自底向上语法分析LR(1)
  5. 利用kali自带的msfvenom工具生成远程控制软件(木马)
  6. Nature杂志总编辑:如何培养一个有价值的研究者
  7. 高雅复古立式钢琴音源 Native Instruments The Gentleman Kontakt
  8. Android 设置网络代理
  9. 单片机节日彩灯实训报告_单片机设计节日彩灯控制器课程设计报告
  10. 微弱信号检测_科学家发现水溶液中气体磁共振信号增强新方法