Qt基本組件詳解:按鈕、輸入框與容器控件

Qt基本組件詳解:按鈕、輸入框與容器控件


目錄
  1. 按鈕類組件
    • QPushButton
    • QRadioButton
    • QCheckBox
  2. 輸入框組件
    • QLineEdit
    • QTextEdit
  3. 容器組件
    • QGroupBox
  4. 綜合應用示例
  5. 思維導圖總結

1. 按鈕類組件

1.1 QPushButton(普通按鈕)

功能:基礎交互按鈕,支持點擊事件
核心特性

  • 文本/圖標顯示
  • 狀態變化(按下/懸停)
  • 快捷鍵支持

源碼示例

#include <QPushButton>QPushButton* btn = new QPushButton("提交", this);
btn->setGeometry(50, 30, 100, 40);  // 位置(x,y) 尺寸(寬,高)// 連接點擊信號
connect(btn, &QPushButton::clicked, [](){qDebug() << "按鈕被點擊!";
});

運行效果

  • 顯示灰色矩形按鈕,文字"提交"
  • 鼠標懸停時高亮顯示
  • 點擊后控制臺輸出提示

1.2 QRadioButton(單選按鈕)

功能:互斥選擇,同一容器內只能選一個
特性

  • 自動互斥(同父組件內)
  • 支持按鈕組管理

源碼示例

#include <QRadioButton>
#include <QButtonGroup>QRadioButton* radio1 = new QRadioButton("選項1", this);
QRadioButton* radio2 = new QRadioButton("選項2", this);
radio1->move(50, 80);
radio2->move(50, 110);// 創建按鈕組
QButtonGroup* group = new QButtonGroup(this);
group->addButton(radio1, 1);  // ID=1
group->addButton(radio2, 2);  // ID=2// 選擇變化事件
connect(group, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),[](QAbstractButton* btn){qDebug() << "選中ID:" << group->id(btn);});

運行效果

  • 顯示兩個圓形選擇框
  • 點擊"選項1"時,"選項2"自動取消
  • 選擇時打印對應ID

1.3 QCheckBox(復選框)

功能:多選控件,支持三態(選中/未選/部分選)
特性

  • 獨立選擇
  • tristate模式支持

源碼示例

#include <QCheckBox>QCheckBox* check1 = new QCheckBox("蘋果", this);
QCheckBox* check2 = new QCheckBox("香蕉", this);
check1->move(50, 150);
check2->move(50, 180);// 三態模式
check2->setTristate(true);// 狀態變化事件
connect(check1, &QCheckBox::stateChanged, [](int state){qDebug() << (state ? "選中" : "取消");
});

運行效果

  • "蘋果"顯示方形復選框
  • "香蕉"顯示帶方框的復選框(三態)
  • 勾選時控制臺輸出狀態

2. 輸入框組件

2.1 QLineEdit(單行輸入框)

功能:單行文本輸入
核心特性

  • 密碼模式
  • 輸入驗證
  • 占位提示文本

源碼示例

#include <QLineEdit>QLineEdit* lineEdit = new QLineEdit(this);
lineEdit->setGeometry(50, 220, 200, 30);
lineEdit->setPlaceholderText("請輸入用戶名");// 密碼模式
QLineEdit* pwdEdit = new QLineEdit(this);
pwdEdit->setGeometry(50, 260, 200, 30);
pwdEdit->setEchoMode(QLineEdit::Password);  // 密碼掩碼

運行效果

  • 顯示矩形輸入框,無輸入時顯示灰色提示文本
  • 密碼框輸入時顯示圓點替代字符

2.2 QTextEdit(多行文本編輯)

功能:富文本編輯器
特性

  • 支持HTML格式
  • 文本查找/替換
  • 滾動條支持

源碼示例

#include <QTextEdit>QTextEdit* textEdit = new QTextEdit(this);
textEdit->setGeometry(50, 300, 300, 200);
textEdit->setHtml("<b>加粗文本</b> <i>斜體文本</i>");// 插入純文本
textEdit->append("追加新行");

運行效果

  • 顯示帶滾動條的多行編輯區
  • 首行顯示加粗和斜體HTML文本
  • 底部追加普通文本行

3. 容器組件:QGroupBox

功能:創建分組容器,增強布局邏輯
特性

  • 帶標題邊框
  • 管理內部組件狀態
  • 支持單選組容器

源碼示例

#include <QGroupBox>
#include <QVBoxLayout>QGroupBox* groupBox = new QGroupBox("用戶信息", this);
groupBox->setGeometry(300, 30, 250, 200);// 內部布局
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(new QLineEdit("姓名"));
layout->addWidget(new QLineEdit("電話"));
groupBox->setLayout(layout);// 單選組容器
QGroupBox* radioGroup = new QGroupBox("性別", this);
radioGroup->setGeometry(300, 240, 250, 100);
QVBoxLayout* radioLayout = new QVBoxLayout;
radioLayout->addWidget(new QRadioButton("男"));
radioLayout->addWidget(new QRadioButton("女"));
radioGroup->setLayout(radioLayout);

運行效果

  • 顯示帶"用戶信息"標題的矩形框
  • 內部包含兩個單行輸入框
  • "性別"分組框包含兩個互斥單選按鈕

4. 綜合應用示例

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QButtonGroup>
#include <QGroupBox>
#include <QTextEdit>
#include <QVBoxLayout>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;window.setWindowTitle("Qt組件綜合示例");window.resize(600, 400);// 主布局QVBoxLayout* mainLayout = new QVBoxLayout(&window);// 按鈕組QGroupBox* btnGroup = new QGroupBox("操作");QHBoxLayout* btnLayout = new QHBoxLayout;btnLayout->addWidget(new QPushButton("保存"));btnLayout->addWidget(new QPushButton("取消"));btnGroup->setLayout(btnLayout);// 文本編輯區QTextEdit* textEdit = new QTextEdit;textEdit->setPlaceholderText("輸入內容...");mainLayout->addWidget(btnGroup);mainLayout->addWidget(textEdit);window.show();return app.exec();
}

運行效果描述

  1. 窗口頂部顯示"操作"分組框
    • 內部水平排列"保存"和"取消"按鈕
  2. 下方顯示多行文本編輯區
    • 空白時顯示"輸入內容…"提示
    • 支持多行文本輸入和格式編輯
  3. 窗口尺寸可自由調整
    • 組件隨窗口自動縮放

核心要點總結

  1. 按鈕類:QPushButton基礎交互,QRadioButton互斥選擇,QCheckBox多選
  2. 輸入控件:QLineEdit處理單行文本,QTextEdit支持富文本編輯
  3. 容器管理:QGroupBox實現視覺分組和邏輯分組
  4. 最佳實踐:組合使用按鈕組(QButtonGroup)和布局管理器實現復雜界面

原創技術筆記,轉載需注明出處。更多系統編程內容持續更新中…

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

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

相關文章

Unity Universal Render Pipeline/Lit光照材質介紹

文章目錄前言參數介紹1、表面選項1.1 Worflow Mode工作流模式1.2 Surface Type 表面類型1.3 Blending Mode 混合模式1.4 Preserve Specular 保留鏡面光照&#xff08;高光&#xff09;1.5 Render Face 渲染面1.6 Alpha Clipping 透明度剪裁1.7 Receive Shadows 是否接收陰影2、…

uni-app ios離線推送,推送后點擊推送的鏈接進入程序后再次回到桌面,無法消除app的角標問題

問題現象&#xff1a; 解決方案&#xff1a; 1、用h5方法清理 h5地址&#xff1a;HTML5 API Reference 廢話不多說上代碼 /*** 清除應用角標&#xff08;支持iOS和Android&#xff09;* 使用H5方法清理推送角標*/clearAppBadge() {// #ifdef APP-PLUStry {plus.runtime.setBad…

遷移Oracle SH 示例 schema 到 PostgreSQL

接著上一篇文章&#xff1a;遷移Oracle HR 示例 schema 到 PostgreSQL中&#xff0c;本文做Oracle SH&#xff08;Sales History&#xff09;示例 schema的遷移&#xff0c;SH schema比HR schema更大更復雜&#xff0c;本次遷移的重點是&#xff1a; 分區表外部數據加載 使用…

1.1 ARMv8/ARMv9安全擴展

目錄1.1.1 ARM架構安全演進1.1.2 ARMv8安全特性異常級別(EL)安全模型關鍵安全擴展1.1.3 ARMv9安全創新機密計算架構(CCA)增強的隔離機制1.1.4 安全擴展的TF-A支持1.1.5 安全擴展配置示例1.1.1 ARM架構安全演進 ARM架構從v7到v9的安全演進路線&#xff1a; ARMv7&#xff1a;引…

更新用戶隱私協議后還是 ail api scope is not declared in the privacy agreement怎么辦??!

saveImageToPhotosAlbum:fail api scope is not declared in the privacy agreement昨天明明可以了&#xff0c;開了個會出來&#xff0c;又不行了&#xff0c;真要命啊啊啊啊啊啊啊啊啊啊(現在回想起來可能是因為我把發布的那個版本刪了&#xff0c;因為那個只是用來測試用的e…

練習:對象數組 5

定義一個長度為 3 的數組&#xff0c;數組存儲 1~3 名學生對象作為初始數據&#xff0c;學生對象的學號&#xff0c;姓名各不相同。學生的屬性&#xff1a;學號&#xff0c;姓名&#xff0c;年齡。要求 1&#xff1a;再次添加一個學生對象&#xff0c;并在添加的時候進行學號的…

Linux 中的 .bashrc 是什么?配置詳解

如果你使用過 Linux 終端&#xff0c;那么你很可能接觸過 .bashrc 文件。這個功能強大的腳本是個性化命令行環境并使其更高效運行的關鍵。 在本文中&#xff0c;我們將向你介紹這個文件是什么&#xff0c;在哪里可以找到它&#xff0c;以及如何安全地編輯它。你還將學到一些實…

JVM運行時數據區深度解析

&#x1f4be; JVM運行時數據區深度解析 文章目錄&#x1f4be; JVM運行時數據區深度解析&#x1f3af; 引言&#x1f4da; 方法區&#x1f4cb; 方法區存儲內容&#x1f504; 從永久代到元空間的演進永久代時期&#xff08;JDK 8之前&#xff09;元空間時期&#xff08;JDK 8及…

.NET nupkg包的深度解析與安全防護指南

在.NET開發領域&#xff0c;nupkg包是開發者們不可或缺的工具。它不僅是代碼分發和資源共享的核心載體&#xff0c;還貫穿了開發、構建、部署的全流程。今天&#xff0c;我們將深入探討nupkg包的核心功能、打包發布流程以及安全防護措施&#xff0c;幫助你在.NET開發中更加得心…

Cursor 快速入門指南:從安裝到核心功能

引言 Cursor 是一款融合 AI 能力的現代代碼編輯器&#xff0c;旨在提升開發者的編碼效率。本文將帶您從零開始&#xff0c;快速掌握 Cursor 的完整使用流程 - 包括安裝配置、項目初始化以及核心 AI 功能的應用。 正文 1. 安裝與初始配置 1.1 下載與安裝 Cursor 支持跨平臺…

自然語言處理中probe探測是什么意思。

文章目錄&#x1f539; 1. 英文單詞的基本含義&#xff08;動詞 & 名詞&#xff09;? 作為動詞&#xff08;to probe&#xff09;&#xff1a;? 作為名詞&#xff08;a probe&#xff09;&#xff1a;&#x1f539; 2. 不同領域的具體含義&#x1f539; 3. 在機器學習/NL…

【記錄】Ubuntu掛載home文件夾到磁盤

問題描述 服務器裝好后,home文件夾一般存放各個用戶的文件,默認的存儲磁盤為系統磁盤,一般比較小,可能幾百G,這對于服務器來講,相當小了,所以需要對home文件夾進行重新調整。 我之前的博文 點擊進入 相關配置在重啟機器后,磁盤配置自動失效,即配置好后,home在大的磁…

【注意避坑】基于Spring AI 開發本地天氣 mcp server,通義靈碼測試MCP server連接不穩定,cherry studio連接報錯

springboot 版本&#xff1a; 3.5.4 cherry studio版本&#xff1a;1.4.7 通義靈碼版本&#xff1a; 2.5.13 文章目錄 問題描述&#xff1a;1. 通義靈碼添加mcp server &#xff0c;配置測試2. cherry studio工具添加mcp server &#xff0c;配置測試 項目源代碼&#xff1a;解…

Paimon LSM Tree Compaction 策略

壓縮怎么進行的這里的操作都是KValue&#xff0c;內部有row kind&#xff0c;標記了刪除和插入MergeTreeCompactManager 是 Paimon 中 Merge-Tree 結構壓縮任務的總調度中心。它的核心職責就是監控文件的層級狀態&#xff08;Levels&#xff09;&#xff0c;并在合適的時機&…

小米路由器3C刷OpenWrt,更換系統/變磚恢復 指南

基礎篇看這里&#xff1a; 小米路由器3C如何安裝OpenWrt官方編譯的ROM - 嗶哩嗶哩 小米路由器 3C 刷入 Breed 和 OpenWrt - Snoopy1866 - 博客園 一、路由器注入 如果按照上面的文章&#xff0c; telnet、ftp一直連接失敗,那么可以嘗試看 這里&#xff1a; 獲取路由器root權…

Spring Boot 項目啟動時按需初始化加載數據

1、新建類&#xff0c;類上添加注解 Component &#xff0c;該類用于在項目啟動時處理數據加載任務&#xff1b; 2、該類實現 ApplicationRunner 接口&#xff0c;并重寫 run 方法&#xff1b; 3、在重寫的 run 方法里處理數據加載任務&#xff1b; 注意&#xff1a; 有定時加載…

MCP快速入門—快速構建自己的服務器

引言 隨著大語言模型(LLM)技術的快速發展&#xff0c;如何擴展其能力邊界成為開發者關注的重點。MCP(Model Capability Protocol)作為一種協議標準&#xff0c;允許開發者構建自定義服務器來增強LLM的功能。 正文內容 1. MCP核心概念與技術背景 MCP服務器主要提供三種能力類…

Vue 事件總線深度解析:從實現原理到工程實踐

在 Vue 組件通信體系中&#xff0c;事件總線&#xff08;Event Bus&#xff09;是處理非父子組件通信的輕量解決方案。本文將從技術實現細節、工程化實踐、內存管理等維度展開&#xff0c;結合源碼級分析與典型場景&#xff0c;帶你全面掌握這一核心技術點。?一、事件總線的技…

CMake Qt靜態庫中配置qrc并使用

CMake Qt序言環境代碼序言 看網上這資料較少&#xff0c;且我理解起來有歧義&#xff0c;特地補充 環境 CMake&#xff1a;3.29.2 Qt&#xff1a;5.15.2 MSVC&#xff1a;2022 IDE&#xff1a;QtCreator 代碼 方式一&#xff1a; 在CMakeLists.txt里&#xff0c;add_libr…

記錄一下:成功部署k8s集群(部分)

前提條件&#xff1a;安裝了containerd、docker 關閉了firewalld、selinux 配置了時間同步服務 chronyd 關閉swap分區等1、在控制節點、工作節點&#xff0c;安裝kubelet、kubeadm、kubectlyum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0 …