Qt QComboBox组合框控件

文章目录

  • 1 属性和方法
    • 1.1 文本
    • 1.2 图标
    • 1.3 插入和删除
    • 1.4 信号和槽
  • 2 实例
    • 2.1 布局
    • 2.2 代码实现

  • Qt中的组合框是集按钮和下拉列表体的控件,,它占用的屏幕空间很小,对应的类是QComboBox

1 属性和方法

QComboBox有很多属性,完整的可查看帮助文档。这里列出常用的属性和方法:

1.1 文本

当前组合框中当前项的索引和文本

// 获取当前条目的索引和文本
int currenIndex() const;
QSring currenText() const;// 获取和设置指定索引条目的文本
QString itemText(int index) const;
void setItemText(int index, const QString &text);

1.2 图标

还可以给条目添加图标

// 获取和设置对应索引条目的图标
QIcon itemIcon(int index) const;
void setItemIcon(int index, const QIcon *icon);

1.3 插入和删除

向组合框QComboBox中插入和删除项目,既可以在QT设计师界面中操作,也可以通过代码来实现

  • 通过QT设计师界面

在组合框上右键->【编辑项目…】在打开的编辑窗口中可以增加删除条目

在这里插入图片描述

  • 通过程序

新增条目:可以一次新增一个条目,也可以一次新增多个条目

// 一次新增一个条目
void addItem(const QString &text. const QVariant &userData = QVariant());
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant());// 一次新增多个条目
void addItems(const QStringList &text);

插入条目:可以一次插入一个条目,也可以一次插入多个条目

// 一次插入一个条目
void insertItem(int index, const QString &text, const QVariant &userData = QVariant());
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant());// 一次插入多个条目
void insertItems(int index, const QStringList &list);

插入策略:在插入条目时,还可以指定插入的策略

// 获取和设置插入策略
QComboBox::insertPolicy insertPolicy() const;
void setInsertPolicy(QComboBox::insertPolicy policy);

常用的插入策略有:

  • QComboBox::NoInsert 不插入
  • QComboBox::InsertAtTop 作为第一条条目插入(替换原第一条条目)
  • QComboBox::InsertAtCurrent 替换当前条目
  • QComboBox::InsertAtBottom 在最后一个条目之后插入
  • QComboBox::InsertAfterCurrent 在当前条目之后插入
  • QComboBox::InsertBeforeCurrent 当前条目之前插入
  • QComboBox::InsertAlphabetically 英文字母顺序插入

插入分隔符:用于在条目之间插入一条分隔符

// 在指定索引位置处插入分隔符
void insertSeparator(int index);

删除条目:删除指定索引位置的条目

// 删除指定索引的条目
void removeItem(int index);

1.4 信号和槽

// 当前选中的条目变化时, 会发射这个两个信号
void currentIndexChanged(int index);
void currentTextChanged(const QString &text);

2 实例

该案例演示,单选按钮的属性以及信号槽

在这里插入图片描述

2.1 布局

在Ul设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

在这里插入图片描述

2.2 代码实现

// 在Widget.h中
#ifndef WIDGET_H
#define WIDGET_H#include <QStringList>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent = nullptr);void onCboProvinceChanged(int);void onCboUniversityChanged(int);void onCboCityChanged(int);~Widget();private:Ui::Widget *ui;QStringList *gdCityList;QStringList *zjCityList;QStringList *sdCityList;QStringList *hbCityList;QStringList *nmCityList;
};
#endif  // WIDGET_H// 在Widget.cpp 中
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 添加省份ui->cboProvince->addItem("广东省");ui->cboProvince->addItem("浙江省");ui->cboProvince->addItem("山东省");ui->cboProvince->addItem("河北省");ui->cboProvince->addItem("内蒙古自治区");// 添加图标ui->cboProvince->setItemIcon(0, QIcon(":/res/facebook.ico"));ui->cboProvince->setItemIcon(1, QIcon(":/res/Instagram.ico"));ui->cboProvince->setItemIcon(2, QIcon(":/res/Messenger.ico"));ui->cboProvince->setItemIcon(3, QIcon(":/res/Pinterest.ico"));ui->cboProvince->setItemIcon(4, QIcon(":/res/WhatsApp.ico"));// 添加城市gdCityList = new QStringList{"广州市", "深圳市", "珠海市", "东莞市"};zjCityList = new QStringList{"杭州市", "宁波市", "温州市", "绍兴市"};sdCityList = new QStringList{"济南市", "青岛市", "烟台市", "威海市"};hbCityList = new QStringList{"石家庄市", "保定市", "廊坊市", "衡水市"};nmCityList =new QStringList{"呼和浩特市区", "包头市", "呼伦贝尔市", "赤峰市"};ui->cboCity->addItems(*gdCityList);// 选中省份只显示所在市区实现connect(ui->cboProvince, &QComboBox::currentIndexChanged, this,&Widget::onCboProvinceChanged);// 当城市变化时触发connect(ui->cboCity, &QComboBox::currentIndexChanged, this,&Widget::onCboCityChanged);connect(ui->cboUniversity, &QComboBox::currentIndexChanged, this,&Widget::onCboUniversityChanged);connect(ui->leName, &QLineEdit::textChanged, this, [=]() {QString name = ui->leName->text();QString university = ui->cboUniversity->currentText();QString province = ui->cboProvince->currentText();QString city = ui->cboCity->currentText();QString s = name + " 毕业于" + university + ", 来自" + province + city;ui->leResult->setText(s);});
}// 当省份变化时触发
void Widget::onCboProvinceChanged(int index) {ui->cboCity->clear();switch (index) {case 0:ui->cboCity->addItems(*gdCityList);break;case 1:ui->cboCity->addItems(*zjCityList);break;case 2:ui->cboCity->addItems(*sdCityList);break;case 3:ui->cboCity->addItems(*hbCityList);break;case 4:ui->cboCity->addItems(*nmCityList);break;}QString name = ui->leName->text();QString university = ui->cboUniversity->currentText();QString province = ui->cboProvince->currentText();QString city = ui->cboCity->currentText();QString s = name + " 毕业于" + university + ", 来自" + province + city;ui->leResult->setText(s);
}// 当学校变化时触发
void Widget::onCboUniversityChanged(int) {QString name = ui->leName->text();QString university = ui->cboUniversity->currentText();QString province = ui->cboProvince->currentText();QString city = ui->cboCity->currentText();QString s = name + " 毕业于" + university + ", 来自" + province + city;ui->leResult->setText(s);
}// 当城市变化时触发
void Widget::onCboCityChanged(int) {QString name = ui->leName->text();QString university = ui->cboUniversity->currentText();QString province = ui->cboProvince->currentText();QString city = ui->cboCity->currentText();QString s = name + " 毕业于" + university + ", 来自" + province + city;ui->leResult->setText(s);
}Widget::~Widget() {delete ui;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java编程避坑指南之关键字专题

1、Java常见关键字 1&#xff09;、48个关键字&#xff1a; abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、l…

C++入门【27-C++ 引用】

引用变量是一个别名&#xff0c;也就是说&#xff0c;它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量&#xff0c;就可以使用该引用名称或变量名称来指向变量。 C 引用 vs 指针 引用很容易与指针混淆&#xff0c;它们之间有三个主要的不同&#xff1a; 不存在…

编程语言的未来:创新与发展

编程语言的未来&#xff1f; 编程语言是计算机软件的基础&#xff0c;它们为程序员提供了一种沟通和指导计算机的方式。随着软件需求的不断增长和技术的进步&#xff0c;编程语言也需要不断演化和创新&#xff0c;以满足不断变化的需求。未来的编程语言将更加强大、灵活、易用…

航空服务市场分析:预计2024年客运总量将达40亿人次

在政策的引导和市场发展下&#xff0c;支线航空发展机遇在于在一些具备需求的区域&#xff0c;持续推进"航空服务大众化"。此前&#xff0c;美国实行"普遍航空服务"计划&#xff0c;我国也需要加快推进"国家基本航空服务计划"政策体系。国民经济…

springboot第46集:Nginx,Sentinel,计算机硬件的介绍

image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png 什么是单点容错率低&#xff1a; 单点容错率低指的是系统中存在某个关键节点&#xff0c;一旦这个节点发生故障或崩…

IDEA中在Java项目中添加Web模块 与配置tomcat服务器

现有项目添加直接走第二步 生成普通新项目 给项目添加框架支持 勾选 Web Application 选项, 点击OK 得到项目目录结构 , 出现web目录结构, 且web目录文件夹出现小蓝点 web或webapp 没有出现小蓝点 说明web配置没有出现或是手动构建的目录结构 , 在IDE关闭或者迁移项目时会出…

【虚拟仪器Labview】习题T1-详解

目录 题目要求思路计时部分详解实现第二个部分&#xff1a;将X*3Y 的的结果 Z与100进行比较。全部完成 题目要求 从前面板输入两个浮点数:X,Y,计算 X*3Y 的的结果 Z&#xff0c;在前面板显示计算结果。并且判断 Z是否小于 100&#xff0c;如果 Z 小于 100&#xff0c;前面板中的…

Java快速排序希尔排序归并排序

快速排序算法 快速排序的原理&#xff1a;选择一个关键值作为基准值。比基准值小的都在左边序列&#xff08;一般是无序的&#xff09;&#xff0c;比基准值大的都在右边&#xff08;一般是无序的&#xff09;。一般选择序列的第一个元素。 一次循环&#xff1a;从后往前比较&…

实现复数计算器

复数计算器实现 摘要 本论文描述了一个复数计算器的设计和实现&#xff0c;旨在扩展传统计算器的功能&#xff0c;以支持复数的加法、减法、乘法和除法。通过使用Java编程语言和Swing图形用户界面库&#xff0c;我们创建了一个直观、易于使用的界面&#xff0c;允许用户输入复…

在qemu虚拟机环境下,使用kgdb调试kernel

enable kgdb的情况下&#xff0c;使用qemu启动kernel 1&#xff0c;需要先在内核配置中增加kgdb的支持 2&#xff0c;启动qemu虚拟机时&#xff0c;增加参数-s -S&#xff0c;这两个参数会使得kernel在启动之后遇到的第一个指令等待gdb连接 例子&#xff1a; /qemu-project…

C++入门【28-C++ 把引用作为参数】

我们已经讨论了如何使用指针来实现引用调用函数。下面的实例使用了引用来实现引用调用函数。 实例 #include <iostream>using namespace std;// 函数声明void swap(int& x, int& y);int main () {// 局部变量声明int a 100;int b 200;cout << "交…

[力扣 Hot100]Day2 字母异位词分组

题目描述 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 出处 思路 这题有点考阅读理解&#xff0c;意思就是把输入数组中的所含字母相同但顺序不同的单词放到同…

一、Sharding-JDBC系列01:整合SpringBoot实现分库分表,读写分离

目录 一、概述 二、案例演示-水平分表 (1)、创建springboot工程 (2)、创建数据库和数据表 (3)、application.yaml配置分片规则 (4)、测试数据插入、查询操作 4.1、插入-控制台SQL日志 4.2、查询-控制台SQL日志 三、案例演示-水平分库 (1)、创建数据库和数据表 (2…

阿里云和AWS之间的应用程序防火墙比较及选择建议!

对于大多数开发人员来说&#xff0c;托管在云中的 Web 应用程序或 REST API 是一种常见方案。但是&#xff0c;并非每个应用程序都具有相同的安全级别。将 Web 应用程序防火墙 &#xff08;WAF&#xff09; 添加到 Web 应用程序是提高安全性的有用方法。 在本文中&#xff0c;…

【MySQL】视图,15道常见面试题---含考核思路详细讲解

目录 一 视图 1.1视图是什么 1.2 创建视图 1.3 查看视图(两种) 1.4 修改视图(两种) 1.5 删除视图 二 外连接&内连接&子查询介绍 2.1 外连接 2.2 内连接 2.3 子查询 三 外连接&内连接&子查询案例 3.1 了解表结构与数据 3.2 15道常见面试题 四 思…

【MySQL】GROUP BY 后面直接使用数字的写法(简写)

力扣题 1、题目地址 1699. 两人之间的通话次数 2、模拟表 表&#xff1a;Calls Column NameTypefrom_idintto_idintdurationint 该表没有主键(具有唯一值的列)&#xff0c;它可能包含重复项。该表包含 from_id 与 to_id 间的一次电话的时长。from_id ! to_id 3、要求 编…

linux磁盘总结

什么是page_cache linux读写磁盘&#xff0c;如果都是采用directIO的话&#xff0c;效率太低&#xff0c;所以我们在读写磁盘上加了一层缓存&#xff0c;page_cache。读的话&#xff0c;如果page_cache有的话&#xff0c;就不用向磁盘发出请求。写的话&#xff0c;也直接写入的…

C# 使用多线程,关闭窗体时,退出所有线程

this.Close(); 只是关闭当前窗口&#xff0c;若不是主窗体的话&#xff0c;是无法退出程序的&#xff0c;另外若有托管线程&#xff08;非主线程&#xff09;&#xff0c;也无法干净地退出&#xff1b;Application.Exit(); 强制所有消息中止&#xff0c;退出所有的窗体&…

移动神器RAX3000M路由器不刷固件变身家庭云之六(高级应用):设置https

本系列文章&#xff1a; 移动神器RAX3000M路由器变身家庭云之一&#xff1a;开通SSH&#xff0c;安装新软件包 移动神器RAX3000M路由器变身家庭云之二&#xff1a;安装vsftpd 移动神器RAX3000M路由器变身家庭云之三&#xff1a;外网访问家庭云 移动神器RAX3000M路由器变身家庭云…

nginx和CDN应用

一、代理的工作机制 1&#xff0e;代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。 2&#xff0e;将获得的网页数据&#xff08;静态 Web 元素&#xff09;保存到缓存中并发送给客户机&#xff0c;以便下次请求相同的数据时快速响应。 二、代理服务器的…