qt5-QComboBox下拉列表框

需要: #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; }
实例下载:链接:https://pan.baidu.com/s/15krhe3ThUBwnC6kM3J3jiA 提取码:6666
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-07-24 C--typedef 给数据类型起新名字
2019-07-24 pyqt5--QTDesigner--安装与配置
2019-07-24 ESP8266--TCP Server
2019-07-24 HTTP协议的请求方法