当前位置: 首页 > web >正文

【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.xdnf.cn/news/3262.html

相关文章:

  • intellij idea最新版git开启Local Changes
  • VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧
  • 算法设计:分治法的基础原理与应用
  • 【C/C++】线程池_学习笔记
  • 对于C++中的STL,push_back()和emplace_back()有什么区别?
  • 深度估计研究方向常用数据集介绍
  • PID控制中,一阶低通滤波算法
  • 08 Python集合:数据 “去重神器” 和运算魔法
  • 机器指标监控技术方案
  • 基于5G AIOT技术的未来社区解决方案PPT(45页)
  • ubuntu22.04 qemu arm64 环境搭建
  • 数据编码(Encoding)
  • vllm部署--Qwen2.5VL-7B
  • SpringMVC框架(一)
  • Tomcat 服务频繁崩溃的排查与解决方法
  • 【人工智能】解锁边缘智能:Ollama 模型压缩技术与 DeepSeek 边缘部署深度解析
  • Excel 数组功能及应用示例
  • SQL实战:05之间隔连续数问题求解
  • 安全企业内部im,BeeWorks即时通讯
  • boost 编译(windows10 + mingw7.3.0)
  • EWM 流程全自动化实现方法
  • 华为发布全球首个L3商用智驾ADS4.0
  • SpringBoot 设置HTTP代理访问
  • Wartales 战争传说 [DLC 解锁] [Steam] [Windows SteamOS]
  • transformers库里model.generate和model.forward的区别 generate函数里不同的解码方式
  • 【MyBatis-Plus】禁用某个方法里面查询语句的逻辑删除标记
  • Java 中的 设计模式详解
  • errorno 和WSAGetlasterror的区别
  • 潇洒郎: 100% 成功搭建Docker私有镜像仓库并管理、删除镜像
  • Pytorch深度学习框架60天进阶学习计划 - 第55天:3D视觉基础(一)