【C++QT】Combo Box 组合框控件详解
文章目录
- 一、QComboBox(Combo Box)
- 1. 基本用法
- 2. 特性
- 3. 信号与槽函数
- 二、QFontComboBox(Font Combo Box)
- 1. 基本用法
- 2. 特性
- 3. 信号与槽函数
- 三、总结
- 如果这篇文章对你有所帮助,渴望获得你的一个点赞!
在Qt中,QComboBox
是通用组合框,结合下拉列表与可编辑文本框,可通过 addItem
添加选项,支持可编辑模式,具备可编辑性、下拉列表、数据存储、基于模型 / 视图架构等特性;QFontComboBox
是 QComboBox
的子类,专门用于选择字体,能自动列出系统可用字体,有字体选择、过滤、预览等特性。
一、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. 基本用法
QFontComboBox
是 QComboBox
的子类,专门用于选择字体。它会自动列出系统中可用的字体。以下是一个简单的使用示例:
#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();});
三、总结
QComboBox | QFontComboBox | |
---|---|---|
用途 | 通用下拉选择框,可选择多种类型选项(如字符串、数字) | 专门用于选择字体 |
功能特性 | 灵活性高,可自定义选项内容和数据,支持可编辑模式 | 专注字体选择,自动列出系统字体,支持字体过滤和预览 |
槽函数 | 主要关注选项索引和文本变化,如currentIndexChanged 、currentTextChanged | 主要关注字体变化,如currentFontChanged |
使用场景 | 表单输入(如语言、地区选择)、筛选条件设置 | 文本编辑器字体设置、界面样式配置 |
核心价值:
- QComboBox:通过高度灵活的选项管理和交互设计,满足多样化的界面选择需求。
- QFontComboBox:简化字体选择流程,提供直观的视觉反馈,是文本相关应用的必备控件。
官方链接:
- QComboBox 文档
- QFontComboBox 文档