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

【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 文档

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

在这里插入图片描述

相关文章:

  • 关于vue+iview中tabs嵌套及实际应用
  • 分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告
  • 全球合规风暴升级:韩国原产地稽查揭示跨境电商生死线
  • electron+vite+vue3 快速入门教程
  • 基于DeepSeek与HTML的可视化图表创新研究
  • 蛋白质数据库InterPro介绍
  • 《跨端开发变革者:解码阿里Ant Container Engine的底层逻辑》
  • ESP32开发-作为TCP客户端发送数据到网络调试助手
  • Stack--Queue 栈和队列
  • 抢先体验 | Qwen3 模型发布:基于 ZStack AIOS 平台极速体验
  • AI数字人:人类身份与意识的终极思考(10/10)
  • HTML from表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)
  • SpringBoot集成Druid启动报错testWhileIdle is true, validationQuery not set
  • 如何用fiddler进行弱网测试(工作常用篇)
  • Qt官方案例知识点总结(拖放操作——Drag And Drop Robot )
  • 【Linux 网络】网络工具ifconfig和iproute/iproute2工具详解
  • java网络原理5
  • Linux 基础IO(上)--文件与文件描述符fd
  • python将字符串转成二进制数组
  • JVM快速入门
  • 5月起,这些新规将施行
  • 八成盈利,2024年沪市主板公司实现净利润4.35万亿元
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长
  • 我国首部《人工智能气象应用服务办法》今天发布
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案