文章目錄
- 一、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 文檔