【C++QT】Combo Box 组合框控件详解

文章目录

  • 一、QComboBox(Combo Box)
    • 1. 基本用法
    • 2. 特性
    • 3. 信号与槽函数
  • 二、QFontComboBox(Font Combo Box)
    • 1. 基本用法
    • 2. 特性
    • 3. 信号与槽函数
  • 三、总结
    • 如果这篇文章对你有所帮助,渴望获得你的一个点赞!

在Qt中,QComboBox 是通用组合框,结合下拉列表与可编辑文本框,可通过 addItem 添加选项,支持可编辑模式,具备可编辑性、下拉列表、数据存储、基于模型 / 视图架构等特性;QFontComboBoxQComboBox 的子类,专门用于选择字体,能自动列出系统可用字体,有字体选择、过滤、预览等特性。


在这里插入图片描述

一、QComboBox(Combo Box)

1. 基本用法

QComboBox 是一个组合框控件,它结合了一个下拉列表和一个可编辑的文本框(可通过设置 setEditable() 来决定是否可编辑),常用于提供一系列选项供用户选择。以下是一个简单的使用示例:

#include <QApplication>
#include <QWidget>
// 引入 Qt 下拉框类所需的头文件
#include <QComboBox>
#include <QVBoxLayout>int main(int argc, char *argv[])
{// 创建一个 QApplication 对象,它负责管理整个应用程序的资源和事件循环QApplication a(argc, argv);// 创建一个 QWidget 对象,作为主窗口QWidget window;// 创建一个 QVBoxLayout 对象,用于在窗口中进行垂直布局// 并将其与主窗口关联起来QVBoxLayout *layout = new QVBoxLayout(&window);// 创建一个 QComboBox 对象,即下拉框// 并将其与主窗口关联起来QComboBox *comboBox = new QComboBox(&window);// 向下拉框中添加选项comboBox->addItem("Option 1");comboBox->addItem("Option 2");comboBox->addItem("Option 3");// 将下拉框添加到垂直布局中layout->addWidget(comboBox);// 将垂直布局设置为主窗口的布局window.setLayout(layout);// 显示主窗口window.show();// 启动应用程序的事件循环,等待用户操作// 当用户关闭窗口时,事件循环结束,程序退出return a.exec();
}

2. 特性

  • 可编辑性:可通过 setEditable(true) 使组合框变为可编辑,用户可以手动输入内容。
  • 下拉列表:提供一个下拉列表,包含多个选项供用户选择。
  • 数据存储:可以存储各种类型的数据,每个选项可以关联一个 QVariant 类型的数据。
  • 模型 / 视图架构QComboBox 基于模型 / 视图架构,可使用自定义模型来管理数据。

3. 信号与槽函数

常用的信号与槽函数有:

  • currentIndexChanged(int index):当用户选择不同的选项时触发,index 为当前选中项的索引。
QObject::connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),[](int index) {qDebug() << "Selected index:" << index;});
  • currentTextChanged(const QString &text):当当前选中项的文本发生变化时触发,text 为当前选中项的文本。
QObject::connect(comboBox, &QComboBox::currentTextChanged,[](const QString &text) {qDebug() << "Selected text:" << text;});

二、QFontComboBox(Font Combo Box)

1. 基本用法

QFontComboBoxQComboBox 的子类,专门用于选择字体。它会自动列出系统中可用的字体。以下是一个简单的使用示例:

#include <QApplication>
#include <QWidget>
// 引入 QFontComboBox 类的头文件,QFontComboBox 用于提供字体选择的下拉框
#include <QFontComboBox>
#include <QVBoxLayout>int main(int argc, char *argv[])
{// 创建一个 QApplication 对象,它负责初始化应用程序,处理命令行参数// 并管理应用程序的全局资源和事件循环QApplication a(argc, argv);// 创建一个 QWidget 对象,作为应用程序的主窗口QWidget window;// 创建一个 QVBoxLayout 对象,用于对窗口内的控件进行垂直布局// 并将该布局与主窗口关联,使得布局的操作作用于该窗口QVBoxLayout *layout = new QVBoxLayout(&window);// 创建一个 QFontComboBox 对象,用于提供字体选择的下拉框// 并将其与主窗口关联,表明该下拉框是主窗口的子控件QFontComboBox *fontComboBox = new QFontComboBox(&window);// 将字体选择下拉框添加到垂直布局中,使其按照布局规则排列layout->addWidget(fontComboBox);// 将垂直布局设置为主窗口的布局,这样窗口内的控件就会按照该布局排列window.setLayout(layout);// 显示主窗口,将窗口呈现给用户window.show();// 启动应用程序的事件循环,开始处理用户的操作和系统事件// 当用户关闭窗口或程序正常退出时,事件循环结束,返回相应的退出码return a.exec();
}

2. 特性

  • 字体选择:专门用于选择字体,自动列出系统中可用的字体。
  • 字体过滤:可以通过 setFontFilters() 方法设置字体过滤规则,例如只显示等宽字体。
  • 字体预览:用户可以在下拉列表中预览字体的外观。

3. 信号与槽函数

常用的信号与槽函数和 QComboBox 类似:

  • currentFontChanged(const QFont &font):当用户选择不同的字体时触发,font 为当前选中的字体。
QObject::connect(fontComboBox, &QFontComboBox::currentFontChanged,[](const QFont &font) {qDebug() << "Selected font:" << font.family();});

三、总结

QComboBoxQFontComboBox
用途通用下拉选择框,可选择多种类型选项(如字符串、数字)专门用于选择字体
功能特性灵活性高,可自定义选项内容和数据,支持可编辑模式专注字体选择,自动列出系统字体,支持字体过滤和预览
槽函数主要关注选项索引和文本变化,如currentIndexChangedcurrentTextChanged主要关注字体变化,如currentFontChanged
使用场景表单输入(如语言、地区选择)、筛选条件设置文本编辑器字体设置、界面样式配置

核心价值:

  • QComboBox:通过高度灵活的选项管理和交互设计,满足多样化的界面选择需求。
  • QFontComboBox:简化字体选择流程,提供直观的视觉反馈,是文本相关应用的必备控件。

官方链接:

  • QComboBox 文档
  • QFontComboBox 文档

如果这篇文章对你有所帮助,渴望获得你的一个点赞!

在这里插入图片描述

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

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

相关文章

Best Video下载器——全能高清无水印视频下载工具

在当今短视频和流媒体盛行的时代&#xff0c;用户经常遇到想要下载视频却受限于平台限制的情况。无论是收藏喜欢的影视片段、保存有价值的教程&#xff0c;还是进行二次创作&#xff0c;一款高效、免费且支持多平台的视频下载工具显得尤为重要。Best Video下载器正是为此而生&a…

AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?

音频处理领域的天花板被撕开了。 刚刚&#xff0c;kimi 发布全新通用音频基础模型 Kimi-Audio&#xff0c;这款由月之暗面&#xff08;Moonshot AI&#xff09;推出的开源模型&#xff0c;在 24 小时内收获 3.2 万星标&#xff0c;不仅以 1.28% 词错率刷新语音识别纪录&#xf…

安装VMware虚拟机时出现报错:

如果已在 BIOS/固件设置中禁用 Intel VT-x&#xff0c;或主机自更改此设置后从未重新启动&#xff0c;则 Intel VT-x 可能被禁用。 1.解决的方法&#xff1a; BIOS 设置要求 为了使 VMware Workstation 支持用户级别的监控并允许模块 MonitorMode 成功启动&#xff0c;需确保…

基于ESP32 S3 + PVDF采集呼吸心率

压电薄膜可以采集到微动特征&#xff0c;压阻传感器可以采集到是否有大重量压力&#xff0c;利用这个特性实现类似于床带采集呼吸心率&#xff0c;实现生命体征检测功能 ESP32 S3 PVDF实现生命体征检测带 硬件&#xff1a; ESP32 S3PVDF压敏压阻涂鸦传感器&#xff08;可选支…

多模态大语言模型arxiv论文略读(五十)

Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文标题&#xff1a;Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文作者&#xff1a;Dingchen Yang, Bowen Cao, Guang Chen, Changjun Jiang ➡️ 研究机构: 同济大学…

智能驾驶新时代:NVIDIA高级辅助驾驶引领未来出行安全

智能驾驶新时代&#xff1a;NVIDIA高级辅助驾驶引领未来出行安全 在全球汽车产业数字化转型的时代潮流中&#xff0c;高级辅助驾驶技术已逐渐成为推动产业革新的核心动力。作为这一领域的领导者之一&#xff0c;NVIDIA通过其先进的技术解决方案&#xff0c;正在积极塑造未来的…

总结小程序的坑

小程序中的wxss中 background不能使用本地图片 解决方法&#xff1a; 使用 Base64 编码&#xff08;适合小图片&#xff09;使用网络图片&#xff0c; 网络图片需要用https用 image 标签替代 分包的图片主包不能使用&#xff0c;这是分包中的图片资源默认不能被主包或其他分包直…

供应链管理-国际结算:本币互换 / 数字货币桥 / 我国在沙特发行美债

一、本币互换 本币互换&#xff08;Local Currency Swap&#xff09;是指两国&#xff08;或地区&#xff09;的央行&#xff08;货币当局&#xff09;签订协议&#xff0c;约定在一定条件下&#xff0c;任何一方可以一定数量的本币交换等值的对方货币&#xff0c;用于双边贸易…

湖北理元理律师事务所:从法律视角看债务优化的合规实践

在债务纠纷高发的社会背景下&#xff0c;法律服务机构如何通过合规手段帮助债务人实现债务优化&#xff0c;成为公众关注的议题。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构&#xff0c;其服务模式与成果为行业提供了可参考的样本。 服务框架&#xff1a;法…

免费在Colab运行Qwen3-0.6B——轻量高性能实战

Qwen一直在默默地接连推出新模型。 每个模型都配备了如此强大的功能和高度量化的规模,让人无法忽视。 继今年的QvQ、Qwen2.5-VL和Qwen2.5-Omni之后,Qwen团队现在发布了他们最新的模型系列——Qwen3。 这次他们不是发布一个而是发布了八个不同的模型——参数范围从6亿到235…

【Java】打印运行环境中某个类引用的jar版本路径

背景 正式环境出现jar版本不匹配问题&#xff0c;不知道正式环境用的哪个jar版本。通过一下可以打印出类调用的jar // 获取 POIFSFileSystem 类的加载器并打印其来源路径 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…

Python生活手册-元组:保险柜与瑞士军刀

一、元组的本质&#xff1a;数据世界的保险柜 Python元组就像银行金库里的​​智能保险箱​​&#xff0c;一旦存放物品就会自动焊死箱门。当你把结婚戒指和房产证放进保险箱后&#xff0c;任何人都无法替换或破坏这些物品&#xff0c;只能通过特定窗口查看内容。 # 创建家庭…

dameng-mcp-server达梦MCP服务

达梦数据库手写MCP服务 文件名称 server.py 源代码 参考mysql-mcp-server写的dameng数据库版本的 点击访问mysql-mcp-server的github仓库 mcp服务端 import asyncio import logging import os import sys from dmPython import connect from mcp.server import Server from mc…

IntelliJ IDEA 内存优化

优化插件使用 1&#xff09;卸载不必要插件&#xff1a;进入 “设置”→“插件”→“已安装”&#xff0c;查看并卸载不常用的插件&#xff0c;如代码分析、代码覆盖率等不常用的插件&#xff0c;只保留必要的插件。2&#xff09;定期清理与更新插件&#xff1a;定期检查插件更…

TCL中环深化全球布局,技术迭代应对行业调整

在全球能源转型加速与光伏行业深度调整的双重背景下,TCL中环凭借前瞻性的全球化布局与核心技术突破,持续巩固行业领先地位。2024年年报显示,报告期内实现营业收入284.19亿元,净利润为-108.06亿元。面对行业周期性亏损与产业链价格非理性竞争带来的业绩压力,公司自2024年下半年起…

dubbo 异步化实践

DubboService public class AsyncOrderFacadeImpl implements AsyncOrderFacade {private Logger logger LoggerFactory.getLogger(AsyncOrderFacadeImpl.class);// 构建线程池ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(1000, 1000, 10, TimeUnit.SECOND…

CSS3布局方式介绍

CSS3布局方式介绍 CSS3布局(Layout)系统是现代网页设计中用于构建页面结构和控制元素排列的一组强大工具。CSS3提供了多种布局方式,每种方式都有其适用场景,其中最常用的是Flexbox和CSS Grid。 先看传统上几种布局方式,再较详细的介绍现代布局方式Flexbox和CSS Grid。 传…

MoonBit支持国产芯片开发--性能媲美C

MoonBit支持国产芯片开发–性能媲美C 在 ESP32-C3 上实现生命游戏 过去&#xff0c;我们曾在文章《硬件实现&#xff1a;在ESP32-C6单片机上运行MoonBit WASM-4小游戏》中&#xff0c;展示了如何通过 WebAssembly (WASM) 将 MoonBit 程序移植到物理硬件&#xff0c;初步探索其…

【RAG 框架部署】LangChain-Chatchat (原 Langchain-ChatGLM) + Ollama

目录 前言 一、什么是RAG&#xff1f; 二、环境准备和Ollama搭建 1、conda虚拟环境配置 2、Ollama搭建 三、LangChain-Chatchat搭建 1、框架安装 2、文件配置 3、初始化知识库 4、启动Langchan-Chatchat 前言 由于LangChain-Chatchat的 0.3.0 版本已修改为支持不同模…

python对接马来西亚股票完整代码

StockTV全球股票数据API对接实战&#xff1a;构建智能金融分析系统 一、StockTV API核心功能解析 StockTV作为覆盖200国家证券市场的数据平台&#xff0c;其API提供三大核心模块的对接能力&#xff1a; 市场列表查询 - 获取指定国家的股票基础数据个股详情检索 - 查询实时行情…