QT6中Combo Box与Combo BoxFont 功能及用法

一.QComboBox(通用下拉组合框)

1.核心功能与特点

QComboBox 是 "下拉列表 + 输入框" 的组合控件,支持两种模式:

非编辑模式:用户只能从下拉列表中选择预设选项(默认模式);

编辑模式:用户可直接在输入框中输入内容,或从下拉列表选择。

其核心能力包括:

动态添加 / 删除下拉项(支持文本、图标、自定义控件);

设置默认选中项、禁用特定项;

响应选中项变化、编辑内容变化等事件;

支持分组显示下拉项(通过 QStandardItemModel 实现)。

2.QComboBox 代码示例

// 创建 ComboBox

QComboBox *comboBox = new QComboBox(this);

comboBox->setWindowTitle("QComboBox Example");

comboBox->resize(300, 30);

// 添加单项

comboBox->addItem("Option 1","北京"); //"北京" 类似注释,但程序可以读取

comboBox->addItem("Option 2","天津");

comboBox->addItem("Option 3","上海");

// 或者使用 addItems 批量添加

QStringList items;

items << "Red" << "Green" << "Blue";

comboBox->addItems(items);

// 连接信号:当选项改变时触发

QObject::connect(comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),

=\](int index) { qDebug() \<\< "Selected index:" \<\< index \<\< ", Text:" \<\< comboBox-\>itemText(index); }); qDebug() \<\<"打印1:"\<\itemText(0)\<\itemData(0).toString(); qDebug() \<\<"打印2:"\<\itemText(1)\<\itemData(1).toString(); ****3.说明**** (1)comboBox-\>addItem("Option 1","北京"); //"北京" 类似注释,但程序可以读取 但designer界面模式没有此功能 (2)cityComboBox-\>addItem(QIcon(":/icons/beijing.png"), "北京", "中国首都,政治文化中心"); //向下拉框添加项(部分带图标) designer界面模式下,属性中可以直接选择自带的图标 ****二.QFontComboBox(字体下拉组合框)**** ****1.核心功能与特点**** QFontComboBox 是 QComboBox 的子类,专门用于字体选择,无需手动添加字体列表 ------ 它会自动加载系统中已安装的字体,并以 "字体名称 + 示例文本" 的形式显示,核心特点: 自动枚举系统字体,支持过滤(如仅显示等宽字体、中文字体); 选中字体后可直接获取 QFont 对象(包含字体名称、大小、样式); 支持设置 "示例文本"(默认显示 "Abc",可自定义为中文如 "字体示例"); 继承 QComboBox 的所有功能(如可编辑、信号槽)。 ****2.常用字体过滤规则**** QFontComboBox::AllFonts:显示所有字体(默认); QFontComboBox::ScalableFonts:仅显示可缩放字体; QFontComboBox::NonScalableFonts:仅显示不可缩放字体; QFontComboBox::MonospacedFonts:仅显示等宽字体(如 Consolas、Courier New); QFontComboBox::ProportionalFonts:仅显示比例字体(如宋体、Arial)。 ****3.代码示例**** // 创建 FontComboBox QFontComboBox \*fontCombo = new QFontComboBox(this); // 设置字体过滤器:只显示可缩放字体 fontCombo-\>setFontFilters(QFontComboBox::AllFonts); // 可选设置 // 也可设置为其他过滤器,如 QFontComboBox::AllFonts, QFontComboBox::MonospacedFonts 等 fontCombo-\>setGeometry(50, 200, 200, 30); // 创建一个标签来显示字体效果 QLabel \*label = new QLabel(this); label-\>setText("Hello, Qt 6!"); label-\>setAlignment(Qt::AlignLeft); label-\>setGeometry(50, 100, 200, 50); // 连接信号:当字体改变时更新标签字体 QObject::connect(fontCombo, \&QFontComboBox::currentFontChanged, \[=\](const QFont \&font) { // 设置新字体,可以同时设置点大小等属性 QFont newFont = font; newFont.setPointSize(20); // 设置字体大小 label-\>setFont(newFont); qDebug() \<\< "Current font:" \<\< font.family(); }); resize(800, 600); ****三.应用场景总结**** 当需要用户选择 "自定义选项"(如性别、部门、文件类型)时,用 QComboBox; 当需要用户选择 "字体"(如文本编辑器的字体设置、报表设计的字体配置)时,用 QFontComboBox(无需手动维护字体列表,效率更高)。

相关推荐
计算机安禾5 分钟前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
unicrom_深圳市由你创科技9 分钟前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
无限进步_15 分钟前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
C++ 老炮儿的技术栈44 分钟前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
橘颂TA1 小时前
【笔试】算法的暴力美学——牛客 NC213140 :除2!
c++·算法·结构与算法
wsoz2 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
favour_you___2 小时前
2026_4_8算法练习题
数据结构·c++·算法
SccTsAxR2 小时前
算法基石:手撕离散化、递归与分治
c++·经验分享·笔记·算法
Q741_1472 小时前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
夏乌_Wx2 小时前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++