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,一经查实,立即删除!

相关文章

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…

[力扣 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道常见面试题 四 思…

linux磁盘总结

什么是page_cache linux读写磁盘&#xff0c;如果都是采用directIO的话&#xff0c;效率太低&#xff0c;所以我们在读写磁盘上加了一层缓存&#xff0c;page_cache。读的话&#xff0c;如果page_cache有的话&#xff0c;就不用向磁盘发出请求。写的话&#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;以便下次请求相同的数据时快速响应。 二、代理服务器的…

Kali安装Xrdp结合内网穿透实现无公网ip远程访问系统桌面

文章目录 前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于&#xff0c;它允许用户从远程位置访问Kali系统&#xff0c;而无需直接物理访…

vscode在node环境中如何调试

1.在vscode编辑器中&#xff0c;点击左侧的小图标。创建launch.js文件&#xff08;这个文件创建好以后会在项目的.vscode文件下&#xff09; 配置文件内容如下&#xff0c;我们只需要关注program字段&#xff0c;这是入口文件&#xff0c;写绝对路径就行 {// 使用 IntelliS…

用Swift库写爬虫采集统计局公开数据

国家统计局公开的信息还是比较真实准确的&#xff0c;他可以给一个行业带来一些参考性意见。因此&#xff0c;有公司找上我&#xff0c;让我爬取一些行业数据&#xff0c;因为是老客户了也就没推辞&#xff0c;但是因为最近也比较忙&#xff0c;也就利用晚上时间加个班搞下。 首…

Python学习从0到1 day1 你好 Python

我会在那腥臭腐朽的日子里熠熠生辉 ——24.1.11 1.第一个Python程序 安装python程序,输出第一个程序:你好,世界 print("Hello World"); 2.Python解释器 python解释器,是一个计算机程序,用来翻译python代码,并提交给计算机执行 功能:1.翻译代码 2.提交给计算机…

自动化测试框架搭建

思想&#xff1a; 1、基本目录的搭建 report:静态输出目录(报告或者日志) data&#xff1a;静态输入目录(可以存放Excel数据&#xff0c;被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法&#xff0c;一般拿到别…

汽车产线设备CAN总线一键刷写方案

汽车产线设备CAN总线一键刷写方案 一、概述 随着汽车工业的不断发展&#xff0c;CAN总线技术在汽车产线设备中得到了广泛应用。然而&#xff0c;在实际生产过程中&#xff0c;设备的软件升级和配置更改是不可避免的。为了提高生产效率&#xff0c;我们推出了一键刷写CAN总线解…

初识QT。

文章目录 前言一、QWidget1、了解内容main文件中的基本内容。.pro项目文件的内容。mywidget.h文件内容。命名规范和快捷键Qt助手 2、button按钮3、对象树4、信号和槽5、自定义信号和槽函数拓展 6、Lambda表达式7、练习 二、QMainWindow1、菜单栏和菜单项2、工具栏3、状态栏4、铆…