需要:  #include<QComboBox>

win.h

#ifndef WIN_H
#define WIN_H

#include <QWidget>
#include <QComboBox>  //下拉列边框类
#include <QDebug>

class Win : public QWidget
{
    Q_OBJECT

public:
    Win(QWidget *parent = nullptr);
    ~Win();

    QComboBox* combobox;//  定义下拉列表框指针对象
    int i;
    QStringList strList;
    QString t;



public slots:  //槽标记
    void slotFunc(int);  //选项变化事件currentIndexChanged槽函数
    void slotFunc1(QString);
    void slotFunc3(int);
    void slotFunc4(QString);



};
#endif // WIN_H

win.cpp

#include "win.h"

Win::Win(QWidget *parent)
    : QWidget(parent)
{
    this->resize(300,300);

    combobox = new QComboBox(this);  // 创建下拉列表框指针对象
    combobox ->setGeometry(10,10,100,30);//设置控件的位置和高宽


    combobox->setMaxCount(4); //设置最大存储项目总数
    //达到指定项目总数后,不能再添加
    combobox->addItem(tr("圆"),1);//添加项目
    //参数1  项目-必须是文本
    //参数2  用户附加数据-任何类型--可以无

    combobox->addItem(QIcon(":/Q/tu/2.png"), "正方形",2);//添加项目--带图标
    //参数1:资源路径--资源文件qrc中的资源
    //参数2:项目
    //参数3:用户附加数据

    combobox->addItem(tr("长方形"),3);
    combobox->addItem(tr("五角星"),4);
    combobox->addItem(tr("棱形"),5);
    //说明:由于setMaxCount(4),此项不会加入

    i=combobox->maxCount(); //返回最大可存储项目总数
    qDebug()<<"最大可存储项目总数:"<<i;
    combobox->setMaxVisibleItems(3);//设置下拉框可见的项目总数
    i=combobox->maxVisibleItems();//返回可见的项目总数
    qDebug()<<"可见的项目总数:"<<i;

    combobox->insertSeparator(2);//插入分割线
    //参数:分割线的索引

    //combobox->clear(); //清空所有项目
    i=combobox->count(); //获取项目总数--包括分割线
    qDebug()<<"项目总数:"<<i;
    combobox->setMaxCount(10);
    combobox->setMaxVisibleItems(6);
    combobox->insertItem(4,QIcon(":/Q/tu/4.png"),"规则",10);
    //参数1:插入位置索引号
    //参数2:图标--可以省略
    //参数3:项目文本
    //参数4:附加数据

    strList << "李明" << "中国人" << "教师";
    combobox->addItems(strList);//一次性添加多个项
    combobox->removeItem(2); //删除指定索引项目
    combobox->setFont(QFont("宋体",10));//设置字体


    //********选项变化事件currentIndexChanged()
    //无论更改是通过编程方式还是通过用户交互完成的,currentIndexChanged()总是被触发
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(slotFunc(int)));
    //参数:传递选项变化后当前的索引号

    connect(combobox,SIGNAL(currentIndexChanged(QString)),this,SLOT(slotFunc1(QString)));
    //参数:传递选项变化后当前的项目文本


    //*************处理激活事件activated()
    //如果组合框的当前项发生变化,会发出信号activated(),仅在更改是由用户交互引起的时候才被触发
    connect(combobox,SIGNAL(activated(int)),this,SLOT(slotFunc3(int)));
    connect(combobox,SIGNAL(activated(QString)),this,SLOT(slotFunc4(QString)));

    //currentTextChanged  当前的文本内容发生改变时
    //editTextChanged  编辑的文本发生改变时
    //highlighted   高亮发生改变时--在下拉列表框中鼠标所选的项目发生变化时



    combobox->setItemIcon(0,QIcon(":/Q/tu/1.png"));  //给指定索引项目设置图标
    combobox->setItemText(2,"矩形"); //给指定索引项目设置文本---原有文本被覆盖

    combobox->setCurrentIndex(2);//指定当前项目--默认是第0项目
    //参数:索引号
    combobox->setCurrentText("李明");//根据文本指定当前项目
    //如果参数所指的项目不存在的话就无效

    combobox->setEditable(true);//编辑框能否被编辑
    //在编辑框中编辑文本回车之后,会追加到项目尾部

    bool b=combobox->isEditable();//返回能否被编辑
    qDebug()<<"能否被编辑:"<<b;

    combobox->setEditText("广东");//设置编辑框中的文本
    //只有setEditable设为True,setEditText才有效
    //按了回车键 会追加到项目尾部

    combobox->setDuplicatesEnabled(true);//是否可重复
    //设置为true时,编辑框按回车时追加的项目可以重复

    b=combobox->duplicatesEnabled();//返回是否可重复
    qDebug()<<"是否可重复:"<<b;

    combobox->setFrame(false);//是否有框架--是否有外框
    //setEditable 设置为True时 setFrame才有效果

    b=combobox->hasFrame();//返回是否有框架
    qDebug()<<"是否有框架:"<<b;

    combobox->setEditable(false);

    combobox->setIconSize(QSize(20,20));//设置图标尺寸

    QSize s=combobox->iconSize();//返回图标尺寸
    qDebug()<<"图标尺寸:"<<s;




}

Win::~Win()
{
}

void Win::slotFunc(int ii) //选项变化事件currentIndexChanged槽函数
{
    qDebug()<<"项目变化了,当前选项索引号:"<<ii;
    i = combobox->currentIndex();  // 获取当前项目的索引
    qDebug()<<"当前选项索引号="<<i;
    t=combobox->currentText();  //取当前项目的文本
    qDebug()<<"当前选项文本="<<t;
    QVariant v=combobox->currentData();  //获取当前项目的用户附加的数据
    //注意返回的数据类型
    int n=v.value<int>(); //以int类型返回v中的值
    qDebug()<<"当前选项附加的数据="<<n;

    v=combobox->itemData(2);//获取指定索引项目的用户附加的数据
    //注意返回的数据类型
    n=v.value<int>(); //以int类型返回v中的值
    qDebug()<<"当前选项附加的数据=="<<n;

    t=combobox->itemText(3);//获取指定索引项目的文本
    qDebug()<<"指定索引项目的文本=="<<t;



    //QString j = typeid(combobox->itemText(3)).name();
    //qDebug()<<"j="<<j;




}

void Win::slotFunc1(QString test)
{
    qDebug()<<"项目变化了,当前选项项目是:"<<test;
}

void Win::slotFunc3(int ii)
{
    qDebug()<<"项目变化了activated,当前选项索引号:"<<ii;
}

void Win::slotFunc4(QString test)
{
    qDebug()<<"项目变化了activated,当前选项项目是:"<<test;
}