Qt学习总结之QComboBox
一.简介
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相关推荐
- QT学习笔记(十四):QLayout的属性介绍
QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...
- 继承QWidget使用QPainter自定义二维图形控件【Qt学习】
继承QWidget使用QPainter自定义二维图形控件[Qt学习] 通过阅读该文章,将了解本文所说的二维图形控件的基本概念.为何要自定义二维图形控件.如何自定义二维图形控件. 该文章将首先进行一些书 ...
- QT学习笔记(摘抄)
QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...
- 【QT学习笔记】基于QT的天气预报
[QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...
- Qt学习笔记,Qt国际化
Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\ ...
- Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...
- 转载: Qt 学习之路 2归档
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/
- 对QT学习之路12-14的源代码补充与修正
QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...
- Qt学习笔记之MySQL数据库
一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
最新文章
- 《人人都能看懂经济学》读书笔记
- redhat-problem to be research
- String 的普通构造函数、拷贝构造函数、析构函数、赋值函数
- Linux通常把设备对象抽象为,linux 设备模型(1)
- python科学计算笔记(九)pandas中DataFrame数据操作函数
- 括号匹配问题(c和c++版本实现)
- 强推!2019年最火的容器、K8S和DevOps入门都在这了
- NCRE四级网络工程师考题详解----目录分解法
- linux充电时熄屏时间,充电时玩手机会损害电池吗
- 人人都是产品经理1.0
- 图解SynchronousQueue原理详解-非公平模式
- php博饼,妙趣横生庆中秋:厦门博饼
- 逆发动机模型map图制作
- 在Pycharm中输入中文显示为繁体的解决办法
- request.getContextPath详解
- hadoop集群HA模式(JN+ZK)+yarn搭建
- linux l7,GitHub - windslinux/l7detect: Network application protocol detection software
- 仿JD商城UI布局达到90%
- appcan.frame.open打开的浮空窗口页面不开启弹动的情况下,也会有微微的滑动bug...
- Windows10系统盘清理实用攻略
热门文章
- 身体语言密码_“我根本不知道她到底想要什么”,《身体语言密码》告诉你
- 微服务-长轮询异常:SecurityManager accessible to the calling code
- 二本 计算机专业2017分数线,2017全国大学二本录取分数线一键查询软件
- 存储过程根据业务场景自己摸索的写法
- 14.[STM32]数电学了三八译码器一脸懵,一文带你从理论到实践
- JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿
- ADSafe导致github等很多网站无法打开
- Quora 没想到能这么红
- 转载:传说中的T检验
- arduino rc522模块使用