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

如果這篇文章對你有所幫助,渴望獲得你的一個點贊!

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77977.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Best Video下載器——全能高清無水印視頻下載工具

在當今短視頻和流媒體盛行的時代&#xff0c;用戶經常遇到想要下載視頻卻受限于平臺限制的情況。無論是收藏喜歡的影視片段、保存有價值的教程&#xff0c;還是進行二次創作&#xff0c;一款高效、免費且支持多平臺的視頻下載工具顯得尤為重要。Best Video下載器正是為此而生&a…

AI音頻核爆!Kimi開源“六邊形戰士”Kimi-Audio,ChatGPT語音版?

音頻處理領域的天花板被撕開了。 剛剛&#xff0c;kimi 發布全新通用音頻基礎模型 Kimi-Audio&#xff0c;這款由月之暗面&#xff08;Moonshot AI&#xff09;推出的開源模型&#xff0c;在 24 小時內收獲 3.2 萬星標&#xff0c;不僅以 1.28% 詞錯率刷新語音識別紀錄&#xf…

安裝VMware虛擬機時出現報錯:

如果已在 BIOS/固件設置中禁用 Intel VT-x&#xff0c;或主機自更改此設置后從未重新啟動&#xff0c;則 Intel VT-x 可能被禁用。 1.解決的方法&#xff1a; BIOS 設置要求 為了使 VMware Workstation 支持用戶級別的監控并允許模塊 MonitorMode 成功啟動&#xff0c;需確保…

基于ESP32 S3 + PVDF采集呼吸心率

壓電薄膜可以采集到微動特征&#xff0c;壓阻傳感器可以采集到是否有大重量壓力&#xff0c;利用這個特性實現類似于床帶采集呼吸心率&#xff0c;實現生命體征檢測功能 ESP32 S3 PVDF實現生命體征檢測帶 硬件&#xff1a; ESP32 S3PVDF壓敏壓阻涂鴉傳感器&#xff08;可選支…

多模態大語言模型arxiv論文略讀(五十)

Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ?? 論文標題&#xff1a;Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ?? 論文作者&#xff1a;Dingchen Yang, Bowen Cao, Guang Chen, Changjun Jiang ?? 研究機構: 同濟大學…

智能駕駛新時代:NVIDIA高級輔助駕駛引領未來出行安全

智能駕駛新時代&#xff1a;NVIDIA高級輔助駕駛引領未來出行安全 在全球汽車產業數字化轉型的時代潮流中&#xff0c;高級輔助駕駛技術已逐漸成為推動產業革新的核心動力。作為這一領域的領導者之一&#xff0c;NVIDIA通過其先進的技術解決方案&#xff0c;正在積極塑造未來的…

總結小程序的坑

小程序中的wxss中 background不能使用本地圖片 解決方法&#xff1a; 使用 Base64 編碼&#xff08;適合小圖片&#xff09;使用網絡圖片&#xff0c; 網絡圖片需要用https用 image 標簽替代 分包的圖片主包不能使用&#xff0c;這是分包中的圖片資源默認不能被主包或其他分包直…

供應鏈管理-國際結算:本幣互換 / 數字貨幣橋 / 我國在沙特發行美債

一、本幣互換 本幣互換&#xff08;Local Currency Swap&#xff09;是指兩國&#xff08;或地區&#xff09;的央行&#xff08;貨幣當局&#xff09;簽訂協議&#xff0c;約定在一定條件下&#xff0c;任何一方可以一定數量的本幣交換等值的對方貨幣&#xff0c;用于雙邊貿易…

湖北理元理律師事務所:從法律視角看債務優化的合規實踐

在債務糾紛高發的社會背景下&#xff0c;法律服務機構如何通過合規手段幫助債務人實現債務優化&#xff0c;成為公眾關注的議題。湖北理元理律師事務所作為經國家司法局注冊登記的債事服務機構&#xff0c;其服務模式與成果為行業提供了可參考的樣本。 服務框架&#xff1a;法…

免費在Colab運行Qwen3-0.6B——輕量高性能實戰

Qwen一直在默默地接連推出新模型。 每個模型都配備了如此強大的功能和高度量化的規模,讓人無法忽視。 繼今年的QvQ、Qwen2.5-VL和Qwen2.5-Omni之后,Qwen團隊現在發布了他們最新的模型系列——Qwen3。 這次他們不是發布一個而是發布了八個不同的模型——參數范圍從6億到235…

【Java】打印運行環境中某個類引用的jar版本路徑

背景 正式環境出現jar版本不匹配問題&#xff0c;不知道正式環境用的哪個jar版本。通過一下可以打印出類調用的jar // 獲取 POIFSFileSystem 類的加載器并打印其來源路徑 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…

Python生活手冊-元組:保險柜與瑞士軍刀

一、元組的本質&#xff1a;數據世界的保險柜 Python元組就像銀行金庫里的??智能保險箱??&#xff0c;一旦存放物品就會自動焊死箱門。當你把結婚戒指和房產證放進保險箱后&#xff0c;任何人都無法替換或破壞這些物品&#xff0c;只能通過特定窗口查看內容。 # 創建家庭…

dameng-mcp-server達夢MCP服務

達夢數據庫手寫MCP服務 文件名稱 server.py 源代碼 參考mysql-mcp-server寫的dameng數據庫版本的 點擊訪問mysql-mcp-server的github倉庫 mcp服務端 import asyncio import logging import os import sys from dmPython import connect from mcp.server import Server from mc…

IntelliJ IDEA 內存優化

優化插件使用 1&#xff09;卸載不必要插件&#xff1a;進入 “設置”→“插件”→“已安裝”&#xff0c;查看并卸載不常用的插件&#xff0c;如代碼分析、代碼覆蓋率等不常用的插件&#xff0c;只保留必要的插件。2&#xff09;定期清理與更新插件&#xff1a;定期檢查插件更…

TCL中環深化全球布局,技術迭代應對行業調整

在全球能源轉型加速與光伏行業深度調整的雙重背景下,TCL中環憑借前瞻性的全球化布局與核心技術突破,持續鞏固行業領先地位。2024年年報顯示,報告期內實現營業收入284.19億元,凈利潤為-108.06億元。面對行業周期性虧損與產業鏈價格非理性競爭帶來的業績壓力,公司自2024年下半年起…

dubbo 異步化實踐

DubboService public class AsyncOrderFacadeImpl implements AsyncOrderFacade {private Logger logger LoggerFactory.getLogger(AsyncOrderFacadeImpl.class);// 構建線程池ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(1000, 1000, 10, TimeUnit.SECOND…

CSS3布局方式介紹

CSS3布局方式介紹 CSS3布局(Layout)系統是現代網頁設計中用于構建頁面結構和控制元素排列的一組強大工具。CSS3提供了多種布局方式,每種方式都有其適用場景,其中最常用的是Flexbox和CSS Grid。 先看傳統上幾種布局方式,再較詳細的介紹現代布局方式Flexbox和CSS Grid。 傳…

MoonBit支持國產芯片開發--性能媲美C

MoonBit支持國產芯片開發–性能媲美C 在 ESP32-C3 上實現生命游戲 過去&#xff0c;我們曾在文章《硬件實現&#xff1a;在ESP32-C6單片機上運行MoonBit WASM-4小游戲》中&#xff0c;展示了如何通過 WebAssembly (WASM) 將 MoonBit 程序移植到物理硬件&#xff0c;初步探索其…

【RAG 框架部署】LangChain-Chatchat (原 Langchain-ChatGLM) + Ollama

目錄 前言 一、什么是RAG&#xff1f; 二、環境準備和Ollama搭建 1、conda虛擬環境配置 2、Ollama搭建 三、LangChain-Chatchat搭建 1、框架安裝 2、文件配置 3、初始化知識庫 4、啟動Langchan-Chatchat 前言 由于LangChain-Chatchat的 0.3.0 版本已修改為支持不同模…

python對接馬來西亞股票完整代碼

StockTV全球股票數據API對接實戰&#xff1a;構建智能金融分析系統 一、StockTV API核心功能解析 StockTV作為覆蓋200國家證券市場的數據平臺&#xff0c;其API提供三大核心模塊的對接能力&#xff1a; 市場列表查詢 - 獲取指定國家的股票基礎數據個股詳情檢索 - 查詢實時行情…