一.简介

1.下拉框是一个组合控件(包含一个文本显示控件和一个按钮)。它默认显示最小的控件给用户来操作,并且可以用下拉选择的界面提供给用户更多的预置选项。
2.它是直接继承自QWidget。

如下:
  

二.功能作用

1.构造函数。

可以直接实例化,不用传递参数。

m_combox = new QComboBox(this);

2.数据操作

数据的操作主要分对数据项的增删改和一些其他的操作
a.增加项目
下拉框的内容有两种增加方式:追加和指定位置添加。

m_combox->addItem("星期四");       //追加项目
m_combox->insertItem(2,"星期五");  //指定位置添加项目

如下:

还有一种增加的方法:批量增加。用一个可迭代的数据就可以

QList<QString> com_list;
com_list.append("星期一");com_list.append("星期二");com_list.append("星期三");
m_combox->addItems(com_list);     //批量添加项目

b.删除项目
删除项目很简单,只要指定需要删除的项目的所索引值就可以了

m_combox->removeItem(1);        //删除项目

c.改指定项目

m_combox->setItemText(2,"这是修改项");       //修改指定项目

d.编辑当前显示文本

如果没有指定的索引值或文本内容,则显示状态不变。

m_combox->setCurrentIndex(5);       //显示指定索引的项
delay(5000);
m_combox->setCurrentText("星期一");    //按指定的内容去显示

e.插入分割线

m_combox->insertSeparator(3);       //插入分隔线

效果如下:

f.插入模型(树形表)

QStandardItemModel *mode = new QStandardItemModel(this);QStandardItem *mode_item1 = new QStandardItem();
QStandardItem *mode_item2 = new QStandardItem();
QStandardItem *mode_item2_1 = new QStandardItem();mode_item1->setText("item1");
mode_item2->setText("item2");
mode_item2_1->setText("item2_1");mode_item2->appendRow(mode_item2_1);mode->clear();
mode->appendRow(mode_item1);
mode->appendRow(mode_item2);QTreeView *tree = new QTreeView(this);
tree->setModel(mode);m_combox->setModel(mode);
m_combox->setView(tree);

g:数据的限制

一般数据的限制是和可编辑的状态同时使用的,用了数据限制可以限制数据的条数。

m_combox->setMaxCount(10);              //设置最大存储项
m_combox->setMaxVisibleItems(3);        //设置最大显示项

h:常规操作

m_combox->setDuplicatesEnabled(true);   //是否可以被重复
m_combox->setFrame(true);               //设置框架边框
QSize qsize;
qsize.setWidth(10);
qsize.setHeight(5);
m_combox->setIconSize(qsize);           //设置图标尺寸
m_combox->iconSize();                   //获取图标尺寸

三.信号

1.条目改变

QComboBox::activated()   ;                       //

2.当前条目改变

QComboBox::currentIndexChanged();    //条目号发生变化
QComboBox::currentTextChanged();        //文本内容发生变化

3.高亮发生变化

QComboBox::highlighted();    //高亮条目发生变化

源码:
mainwindow.c

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTime>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QTreeView>
#include <QFileSystemModel>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);com_list.append("星期一");com_list.append("星期二");com_list.append("星期三");this->resize(800,600);m_combox = new QComboBox(this);m_combox->setGeometry(100,100,200,30);m_textedit = new QTextEdit(this);m_textedit->setGeometry(330,100,200,200);for(int i=0;i<com_list.length();i++){m_combox->addItem(com_list.at(i));}m_combox->addItem("星期四");       //追加项目m_combox->insertItem(2,"星期五");  //指定位置添加项目m_combox->addItems(com_list);     //批量添加项目m_combox->removeItem(1);        //删除项目m_combox->setItemText(2,"这是修改项");       //修改指定项目connect(m_combox,&QComboBox::currentTextChanged,this,&MainWindow::slot_combox);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::slot_combox()
{QString str_temp = m_combox->currentText();m_textedit->setText("当前选择的是:"+str_temp);//    if(!str_temp.compare(com_list.at(0))){//        m_textedit->setText("today is "+str_temp);
//    }else if(!str_temp.compare(com_list.at(1))){//        m_textedit->setText("today is "+str_temp);
//    }else if(!str_temp.compare(com_list.at(2))){//        m_textedit->setText("today is "+str_temp);
//    }
}void MainWindow::delay(int msec)
{QTime dieTime = QTime::currentTime().addMSecs(msec);while( QTime::currentTime() < dieTime )QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}void MainWindow::process()
{m_combox->setCurrentIndex(5);       //显示指定索引的项delay(5000);m_combox->setCurrentText("星期一");    //按指定的内容去显示m_combox->insertSeparator(3);       //插入分隔线QStandardItemModel *mode = new QStandardItemModel(this);QStandardItem *mode_item1 = new QStandardItem();QStandardItem *mode_item2 = new QStandardItem();QStandardItem *mode_item2_1 = new QStandardItem();mode_item1->setText("item1");mode_item2->setText("item2");mode_item2_1->setText("item2_1");mode_item2->appendRow(mode_item2_1);mode->clear();mode->appendRow(mode_item1);mode->appendRow(mode_item2);QTreeView *tree = new QTreeView(this);tree->setModel(mode);m_combox->setModel(mode);m_combox->setView(tree);m_combox->setCurrentIndex(0);m_combox->setFrame(false);m_combox->setMaxCount(10);              //设置最大存储项m_combox->setMaxVisibleItems(3);        //设置最大显示项//设置可重复性m_combox->setDuplicatesEnabled(true);   //是否可以被重复m_combox->setFrame(true);               //设置框架边框QSize qsize;qsize.setWidth(10);qsize.setHeight(5);m_combox->setIconSize(qsize);           //设置图标尺寸m_combox->iconSize();                   //获取图标尺寸}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QComboBox>
#include <QTextEdit>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();void process();
private slots:void slot_combox();
private:Ui::MainWindow *ui;QComboBox *m_combox;QTextEdit *m_textedit;QList<QString> com_list;void delay(int msec);
};#endif // MAINWINDOW_H

Qt学习总结之QComboBox相关推荐

  1. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  2. 继承QWidget使用QPainter自定义二维图形控件【Qt学习】

    继承QWidget使用QPainter自定义二维图形控件[Qt学习] 通过阅读该文章,将了解本文所说的二维图形控件的基本概念.为何要自定义二维图形控件.如何自定义二维图形控件. 该文章将首先进行一些书 ...

  3. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  4. 【QT学习笔记】基于QT的天气预报

    [QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...

  5. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  6. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  7. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  8. 对QT学习之路12-14的源代码补充与修正

    QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

  9. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

最新文章

  1. 《人人都能看懂经济学》读书笔记
  2. redhat-problem to be research
  3. String 的普通构造函数、拷贝构造函数、析构函数、赋值函数
  4. Linux通常把设备对象抽象为,linux 设备模型(1)
  5. python科学计算笔记(九)pandas中DataFrame数据操作函数
  6. 括号匹配问题(c和c++版本实现)
  7. 强推!2019年最火的容器、K8S和DevOps入门都在这了
  8. NCRE四级网络工程师考题详解----目录分解法
  9. linux充电时熄屏时间,充电时玩手机会损害电池吗
  10. 人人都是产品经理1.0
  11. 图解SynchronousQueue原理详解-非公平模式
  12. php博饼,妙趣横生庆中秋:厦门博饼
  13. 逆发动机模型map图制作
  14. 在Pycharm中输入中文显示为繁体的解决办法
  15. request.getContextPath详解
  16. hadoop集群HA模式(JN+ZK)+yarn搭建
  17. linux l7,GitHub - windslinux/l7detect: Network application protocol detection software
  18. 仿JD商城UI布局达到90%
  19. appcan.frame.open打开的浮空窗口页面不开启弹动的情况下,也会有微微的滑动bug...
  20. Windows10系统盘清理实用攻略

热门文章

  1. 身体语言密码_“我根本不知道她到底想要什么”,《身体语言密码》告诉你
  2. 微服务-长轮询异常:SecurityManager accessible to the calling code
  3. 二本 计算机专业2017分数线,2017全国大学二本录取分数线一键查询软件
  4. 存储过程根据业务场景自己摸索的写法
  5. 14.[STM32]数电学了三八译码器一脸懵,一文带你从理论到实践
  6. JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿
  7. ADSafe导致github等很多网站无法打开
  8. Quora 没想到能这么红
  9. 转载:传说中的T检验
  10. arduino rc522模块使用