• qt5QComboBox下拉列表框


    需要:  #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

  • 相关阅读:
    Eclipse下Tomcat插件的安装
    支付宝接口资料解读
    文件转换器服务推荐
    接吻的学问
    Web小工具推荐
    两个优秀的免费字体资源
    每年考证时间
    Visual Studio 2008 简体中文版和MSDN下载
    生活小经验
    UIScrollView and lazy loading
  • 原文地址:https://www.cnblogs.com/liming19680104/p/16514012.html
Copyright © 2020-2023  润新知