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

在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:简化字体选择流程,提供直观的视觉反馈,是文本相关应用的必备控件。

官方链接:


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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenC++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值