97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

寧波企業(yè)網(wǎng)站開發(fā)wordpress美化插件

鶴壁市浩天電氣有限公司 2026/01/24 14:01:36
寧波企業(yè)網(wǎng)站開發(fā),wordpress美化插件,logo在線制作軟件,男的和女的做那個(gè)視頻網(wǎng)站目錄 前言 一、多元素與容器類控件的核心價(jià)值 二、多元素控件#xff1a;批量數(shù)據(jù)的高效展示與交互 2.1 ListWidget#xff1a;簡潔高效的列表控件 2.1.1 核心屬性與 API 2.1.2 基礎(chǔ)用法#xff1a;簡單列表的增刪改查 2.1.3 進(jìn)階用法#xff1a;帶圖標(biāo)的列表與多選…目錄前言一、多元素與容器類控件的核心價(jià)值二、多元素控件批量數(shù)據(jù)的高效展示與交互2.1 ListWidget簡潔高效的列表控件2.1.1 核心屬性與 API2.1.2 基礎(chǔ)用法簡單列表的增刪改查2.1.3 進(jìn)階用法帶圖標(biāo)的列表與多選功能2.1.4 ListWidget 避坑指南2.2 TableWidget功能強(qiáng)大的表格控件2.2.1 核心屬性與 API2.2.2 基礎(chǔ)用法增刪改查2.2.3 TableWidget 避坑指南2.3 TreeWidget層級(jí)分明的樹形控件2.3.1 核心屬性與 API2.3.1 基礎(chǔ)樹形結(jié)構(gòu)2.3.2 TreeWidget 避坑指南三、容器類控件界面的有序組織與分組3.1 GroupBox控件分組的 “收納盒”3.1.1 核心屬性與 API3.1.2 基礎(chǔ)用法表單分組3.1.3 進(jìn)階用法扁平模式與對(duì)齊方式3.1.4 GroupBox 避坑指南3.2 TabWidget多頁面切換的 “導(dǎo)航欄”3.2.1 核心屬性與 API3.2.2 基礎(chǔ)用法功能模塊切換3.2.3 進(jìn)階用法標(biāo)簽頁的增加與刪除3.2.4 TabWidget 避坑指南總結(jié)前言在 Qt GUI 開發(fā)中當(dāng)需要展示批量數(shù)據(jù)或?qū)丶M(jìn)行分組管理時(shí)單純的基礎(chǔ)控件已無法滿足需求。多元素控件ListWidget/TableWidget/TreeWidget專為批量數(shù)據(jù)展示而生支持列表、表格、樹形等多樣化數(shù)據(jù)呈現(xiàn)容器類控件GroupBox/TabWidget則擅長控件分組與界面分區(qū)讓復(fù)雜界面更具邏輯性和可讀性。本文基于 Qt 5.14 版本以 “屬性解析 實(shí)戰(zhàn)案例 進(jìn)階技巧” 的結(jié)構(gòu)全面拆解這兩類控件的核心用法帶你輕松搞定復(fù)雜界面開發(fā)下面就讓我們正式開始吧一、多元素與容器類控件的核心價(jià)值在實(shí)際項(xiàng)目中我們常面臨這些場(chǎng)景展示一組文件列表、呈現(xiàn)多行多列的表格數(shù)據(jù)、構(gòu)建層級(jí)化的分類目錄、將相關(guān)控件歸類展示、用標(biāo)簽頁切換不同功能模塊 —— 這正是多元素與容器類控件的用武之地。多元素控件聚焦 “數(shù)據(jù)展示與交互”支持批量數(shù)據(jù)的添加、刪除、選中、排序等操作是處理集合數(shù)據(jù)的核心工具容器類控件聚焦 “界面組織與分組”通過分組、分頁等方式優(yōu)化界面布局提升用戶體驗(yàn)和界面整潔度。本文將詳細(xì)講解 5 個(gè)核心控件多元素控件ListWidget列表、TableWidget表格、TreeWidget樹形容器類控件GroupBox分組框、TabWidget標(biāo)簽頁二、多元素控件批量數(shù)據(jù)的高效展示與交互多元素控件的核心優(yōu)勢(shì)是“批量管理數(shù)據(jù)”Qt 提供了基于 Item 的簡化版控件ListWidget/TableWidget/TreeWidget無需手動(dòng)創(chuàng)建 Model直接操作 Item 即可實(shí)現(xiàn)數(shù)據(jù)展示開發(fā)效率極高。2.1 ListWidget簡潔高效的列表控件QListWidget 是垂直列表控件適用于展示單列批量數(shù)據(jù)如文件列表、選項(xiàng)列表等支持單選、多選、添加、刪除等基礎(chǔ)操作用法簡潔直觀。2.1.1 核心屬性與 API屬性 / 方法功能說明實(shí)用場(chǎng)景currentRow()獲取當(dāng)前選中行的下標(biāo)未選中返回 - 1選中數(shù)據(jù)后獲取位置currentItem()獲取當(dāng)前選中的 Item 對(duì)象獲取選中數(shù)據(jù)的詳細(xì)信息addItem(const QString text)添加單個(gè)列表項(xiàng)動(dòng)態(tài)添加數(shù)據(jù)addItems(const QStringList items)批量添加列表項(xiàng)初始化批量數(shù)據(jù)insertItem(int row, const QString text)在指定行插入列表項(xiàng)插入中間數(shù)據(jù)takeItem(int row)刪除指定行并返回該 Item需手動(dòng)釋放刪除數(shù)據(jù)并回收資源setSortingEnabled(bool enable)啟用 / 禁用排序數(shù)據(jù)排序展示itemClicked(QListWidgetItem* item)點(diǎn)擊列表項(xiàng)時(shí)觸發(fā)的信號(hào)點(diǎn)擊事件響應(yīng)核心數(shù)據(jù)載體QListWidgetItem每個(gè) Item 可設(shè)置文本、圖標(biāo)、字體、選中狀態(tài)等是列表數(shù)據(jù)的最小單元。2.1.2 基礎(chǔ)用法簡單列表的增刪改查#include widget.h #include QListWidget #include QLineEdit #include QPushButton #include QVBoxLayout #include QHBoxLayout Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); this-setWindowTitle(ListWidget基礎(chǔ)用法編程語言列表); // 布局管理輸入框按鈕水平布局列表垂直布局 QVBoxLayout *mainLayout new QVBoxLayout(this); QHBoxLayout *inputLayout new QHBoxLayout(); // 輸入框用于添加新列表項(xiàng) QLineEdit *inputEdit new QLineEdit(this); inputEdit-setPlaceholderText(請(qǐng)輸入編程語言名稱); // 按鈕添加、刪除 QPushButton *addBtn new QPushButton(添加, this); QPushButton *delBtn new QPushButton(刪除選中, this); // 列表控件 QListWidget *langList new QListWidget(this); // 初始化列表數(shù)據(jù) QStringList initLangs {C, Java, Python, Qt, JavaScript, Golang}; langList-addItems(initLangs); // 啟用排序 langList-setSortingEnabled(true); // 設(shè)置選中模式單選默認(rèn) langList-setSelectionMode(QAbstractItemView::SingleSelection); // 組裝布局 inputLayout-addWidget(inputEdit); inputLayout-addWidget(addBtn); inputLayout-addWidget(delBtn); mainLayout-addLayout(inputLayout); mainLayout-addWidget(langList); // 添加按鈕點(diǎn)擊事件 connect(addBtn, QPushButton::clicked, this, []() { QString text inputEdit-text().trimmed(); if (!text.isEmpty()) { // 添加新項(xiàng)并自動(dòng)排序 new QListWidgetItem(text, langList); inputEdit-clear(); } }); // 刪除按鈕點(diǎn)擊事件 connect(delBtn, QPushButton::clicked, this, []() { // 獲取當(dāng)前選中行 int currentRow langList-currentRow(); if (currentRow ! -1) { // 刪除選中項(xiàng)takeItem返回Item需手動(dòng)刪除避免內(nèi)存泄漏 QListWidgetItem *item langList-takeItem(currentRow); delete item; } }); // 列表項(xiàng)點(diǎn)擊事件 connect(langList, QListWidget::itemClicked, this, [](QListWidgetItem *item) { qDebug() 選中語言 item-text(); }); }2.1.3 進(jìn)階用法帶圖標(biāo)的列表與多選功能ListWidget 支持為 Item 添加圖標(biāo)且支持多選模式適用于文件列表、應(yīng)用列表等場(chǎng)景先在.ui文件中創(chuàng)建控件編寫代碼#include widget.h #include ui_widget.h #include QDebug Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); //往這里添加一些元素 ui-listWidget-addItem(C); ui-listWidget-addItem(Java); ui-listWidget-addItem(Python); //在QListWidgetItem中可以設(shè)置字體屬性設(shè)置圖標(biāo)設(shè)置文字大小設(shè)置是否被選中等狀態(tài) // ui-listWidget-addItem(new QListWidgetItem(C)); // ui-listWidget-addItem(new QListWidgetItem(Java)); // ui-listWidget-addItem(new QListWidgetItem(Python)); //也可以在.ui文件中通過圖形化界面編輯 } Widget::~Widget() { delete ui; } void Widget::on_pushButton_insert_clicked() { //1.先獲取到輸入框中的內(nèi)容 const QString text ui-lineEdit-text(); //2.添加到QListWidget中 ui-listWidget-addItem(text); //添加到末尾如果想添加到中間位置需要使用insertItem } void Widget::on_pushButton_delete_clicked() { //1.先獲取到被選中的元素 int row ui-listWidget-currentRow(); if(row 0) { return; } //2.按照行號(hào)來刪除元素 ui-listWidget-takeItem(row); } void Widget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { //通過這個(gè)槽函數(shù)來感知到變化 if(current ! nullptr) { qDebug() 當(dāng)前選中的元素 current-text(); } if(previous ! nullptr) { qDebug() 上次選中的元素 previous-text(); } }運(yùn)行結(jié)果如下2.1.4 ListWidget 避坑指南內(nèi)存泄漏takeItem方法會(huì)從列表中移除 Item 但不刪除需手動(dòng)delete回收資源排序不生效需先調(diào)用setSortingEnabled(true)新增 Item 才會(huì)自動(dòng)排序多選獲取通過selectedItems()獲取所有選中項(xiàng)返回QListQListWidgetItem*Item 編輯需設(shè)置item-setFlags(item-flags() | Qt::ItemIsEditable)默認(rèn)不可編輯。2.2 TableWidget功能強(qiáng)大的表格控件QTableWidget 是多行多列的表格控件適用于展示結(jié)構(gòu)化數(shù)據(jù)如學(xué)生信息表、商品列表、數(shù)據(jù)統(tǒng)計(jì)等支持單元格編輯、表頭自定義、行高列寬調(diào)整等功能是 Qt 中最常用的多元素控件之一。2.2.1 核心屬性與 API屬性 / 方法功能說明實(shí)用場(chǎng)景setColumnCount(int count)設(shè)置列數(shù)初始化表格結(jié)構(gòu)setRowCount(int count)設(shè)置行數(shù)初始化表格結(jié)構(gòu)setHorizontalHeaderItem(int col, QTableWidgetItem* item)設(shè)置列標(biāo)題自定義表頭文本 / 樣式setItem(int row, int col, QTableWidgetItem* item)設(shè)置單元格內(nèi)容填充表格數(shù)據(jù)currentRow()/currentColumn()獲取當(dāng)前選中單元格的行 / 列下標(biāo)定位選中位置insertRow(int row)/insertColumn(int col)插入行 / 列動(dòng)態(tài)添加數(shù)據(jù)removeRow(int row)/removeColumn(int col)刪除行 / 列動(dòng)態(tài)刪除數(shù)據(jù)setEditTriggers(QAbstractItemView::EditTriggers triggers)設(shè)置編輯觸發(fā)方式控制單元格是否可編輯horizontalHeader()-setSectionResizeMode(QHeaderView::ResizeMode mode)設(shè)置列寬調(diào)整模式自適應(yīng)列寬 / 固定列寬核心數(shù)據(jù)載體QTableWidgetItem每個(gè)單元格對(duì)應(yīng)一個(gè) Item支持設(shè)置文本、圖標(biāo)、對(duì)齊方式、字體等。2.2.2 基礎(chǔ)用法增刪改查在.ui文件中創(chuàng)建控件編寫代碼#include widget.h #include ui_widget.h Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); //創(chuàng)建三行 ui-tableWidget-insertRow(0); ui-tableWidget-insertRow(1); ui-tableWidget-insertRow(2); //創(chuàng)建三列 ui-tableWidget-insertColumn(0); ui-tableWidget-insertColumn(1); ui-tableWidget-insertColumn(2); //給三列設(shè)置列名設(shè)置水平方向的表頭 ui-tableWidget-setHorizontalHeaderItem(0, new QTableWidgetItem(學(xué)號(hào))); ui-tableWidget-setHorizontalHeaderItem(1, new QTableWidgetItem(姓名)); ui-tableWidget-setHorizontalHeaderItem(2, new QTableWidgetItem(年齡)); //給表格中添加數(shù)據(jù) ui-tableWidget-setItem(0, 0, new QTableWidgetItem(1001)); ui-tableWidget-setItem(0, 1, new QTableWidgetItem(張三)); ui-tableWidget-setItem(0, 2, new QTableWidgetItem(20)); ui-tableWidget-setItem(1, 0, new QTableWidgetItem(1002)); ui-tableWidget-setItem(1, 1, new QTableWidgetItem(李四)); ui-tableWidget-setItem(1, 2, new QTableWidgetItem(19)); ui-tableWidget-setItem(2, 0, new QTableWidgetItem(1003)); ui-tableWidget-setItem(2, 1, new QTableWidgetItem(王五)); ui-tableWidget-setItem(2, 2, new QTableWidgetItem(18)); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_insertRow_clicked() { //需要知道當(dāng)前一共有多少行 int rowCount ui-tableWidget-rowCount(); //在最后一行之后新增新行 //注意此處的參數(shù)是“下標(biāo)”表示你新增之后的一行是第幾行 ui-tableWidget-insertRow(rowCount); } void Widget::on_pushButton_deleteRow_clicked() { //獲取到選中的行號(hào) int curRow ui-tableWidget-currentRow(); //刪除這一行 ui-tableWidget-removeRow(curRow); } void Widget::on_pushButton_insertColumn_clicked() { //需要知道當(dāng)前一共有多少列 int colCount ui-tableWidget-columnCount(); //在對(duì)應(yīng)位置新增新列 ui-tableWidget-insertColumn(colCount); //設(shè)置列名從輸入框中獲取到 const QString text ui-lineEdit-text(); ui-tableWidget-setHorizontalHeaderItem(colCount, new QTableWidgetItem(text)); } void Widget::on_pushButton_4_clicked() { //獲取到選中的列號(hào) int curCol ui-tableWidget-currentColumn(); //刪除這一列 ui-tableWidget-removeColumn(curCol); }運(yùn)行結(jié)果2.2.3 TableWidget 避坑指南表頭設(shè)置setHorizontalHeaderLabels需在setColumnCount之后調(diào)用否則表頭不生效單元格居中默認(rèn)單元格文本左對(duì)齊需手動(dòng)設(shè)置item-setTextAlignment(Qt::AlignCenter)行高列寬QHeaderView::Stretch表示自適應(yīng)拉伸QHeaderView::Fixed表示固定尺寸編輯控制setEditTriggers(QAbstractItemView::NoEditTriggers)可禁用單元格編輯避免誤操作數(shù)據(jù)獲取通過item(row, col)獲取單元格數(shù)據(jù)需判斷 Item 是否為nullptr避免空指針崩潰。2.3 TreeWidget層級(jí)分明的樹形控件QTreeWidget 是樹形結(jié)構(gòu)控件適用于展示層級(jí)化數(shù)據(jù)如文件目錄、分類菜單、組織架構(gòu)等支持父節(jié)點(diǎn)、子節(jié)點(diǎn)的嵌套展示支持展開 / 折疊操作。2.3.1 核心屬性與 API屬性 / 方法功能說明實(shí)用場(chǎng)景setHeaderLabel(const QString text)設(shè)置表頭文本單列單列樹形結(jié)構(gòu)setColumnCount(int count)設(shè)置列數(shù)多列樹形多列樹形結(jié)構(gòu)如文件名稱 大小addTopLevelItem(QTreeWidgetItem* item)添加頂層節(jié)點(diǎn)初始化根節(jié)點(diǎn)QTreeWidgetItem* topLevelItem(int index)獲取指定頂層節(jié)點(diǎn)操作頂層節(jié)點(diǎn)topLevelItemCount()獲取頂層節(jié)點(diǎn)個(gè)數(shù)遍歷頂層節(jié)點(diǎn)item-addChild(QTreeWidgetItem* child)為節(jié)點(diǎn)添加子節(jié)點(diǎn)構(gòu)建層級(jí)結(jié)構(gòu)item-setExpanded(bool expanded)設(shè)置節(jié)點(diǎn)是否展開默認(rèn)展開 / 折疊節(jié)點(diǎn)currentItem()獲取當(dāng)前選中的節(jié)點(diǎn)操作選中節(jié)點(diǎn)itemExpanded(QTreeWidgetItem* item)節(jié)點(diǎn)展開時(shí)觸發(fā)的信號(hào)展開節(jié)點(diǎn)時(shí)加載子數(shù)據(jù)核心數(shù)據(jù)載體QTreeWidgetItem每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè) Item支持多列數(shù)據(jù)可通過setText(col, text)設(shè)置每列內(nèi)容。2.3.1 基礎(chǔ)樹形結(jié)構(gòu)先創(chuàng)建控件編寫代碼#include widget.h #include ui_widget.h Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); //設(shè)置根節(jié)點(diǎn)的名字 ui-treeWidget-setHeaderLabel(動(dòng)物); //新增頂層結(jié)點(diǎn) QTreeWidgetItem* item1 new QTreeWidgetItem(); //每個(gè)結(jié)點(diǎn)都可以設(shè)置多個(gè)列此處為了簡單就只設(shè)置一列 item1-setText(0, 貓); //添加到頂層結(jié)點(diǎn)中 ui-treeWidget-addTopLevelItem(item1); //新增頂層結(jié)點(diǎn) QTreeWidgetItem* item2 new QTreeWidgetItem(); //每個(gè)結(jié)點(diǎn)都可以設(shè)置多個(gè)列此處為了簡單就只設(shè)置一列 item2-setText(0, 狗); //添加到頂層結(jié)點(diǎn)中 ui-treeWidget-addTopLevelItem(item2); //新增頂層結(jié)點(diǎn) QTreeWidgetItem* item3 new QTreeWidgetItem(); //每個(gè)結(jié)點(diǎn)都可以設(shè)置多個(gè)列此處為了簡單就只設(shè)置一列 item3-setText(0, 鳥); //添加到頂層結(jié)點(diǎn)中 ui-treeWidget-addTopLevelItem(item3); //新增一些子結(jié)點(diǎn) QTreeWidgetItem* item4 new QTreeWidgetItem(); item4-setText(0, 中華田園貓); item1-addChild(item4); QTreeWidgetItem* item5 new QTreeWidgetItem(); item5-setText(0, 布偶貓); item1-addChild(item5); QTreeWidgetItem* item6 new QTreeWidgetItem(); item6-setText(0, 暹羅貓); item1-addChild(item6); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_insertTopLevelItem_clicked() { //獲取到輸入框中的內(nèi)容 const QString text ui-lineEdit-text(); //構(gòu)造一個(gè)QTreeWidgetItem QTreeWidgetItem* item new QTreeWidgetItem(); item-setText(0, text); //添加到頂層結(jié)點(diǎn)中 ui-treeWidget-addTopLevelItem(item); } void Widget::on_pushButton_insertItem_clicked() { //獲取到當(dāng)前選中的結(jié)點(diǎn) QTreeWidgetItem* currentItem ui-treeWidget-currentItem(); if(currentItem nullptr) { return; } //獲取到輸入框中的內(nèi)容 const QString text ui-lineEdit-text(); //構(gòu)造一個(gè)QTreeWidgetItem QTreeWidgetItem* item new QTreeWidgetItem(); item-setText(0, text); //插入到選中結(jié)點(diǎn)的子結(jié)點(diǎn)中 currentItem-addChild(item); } void Widget::on_pushButton_deleteItem_clicked() { //獲取到當(dāng)前選中的結(jié)點(diǎn) QTreeWidgetItem* currentItem ui-treeWidget-currentItem(); if(currentItem nullptr) { return; } //刪除選中的元素需要先獲取到父元素通過父元素進(jìn)行刪除 QTreeWidgetItem* parent currentItem-parent(); if(parent nullptr) { //頂層元素 int index ui-treeWidget-indexOfTopLevelItem(currentItem); ui-treeWidget-takeTopLevelItem(index); } else { //普通元素 parent-removeChild(currentItem); } }運(yùn)行結(jié)果2.3.2 TreeWidget 避坑指南節(jié)點(diǎn)層級(jí)頂層節(jié)點(diǎn)通過addTopLevelItem添加子節(jié)點(diǎn)通過parentItem-addChild添加路徑獲取通過遞歸遍歷parent()可獲取節(jié)點(diǎn)的完整路徑節(jié)點(diǎn)刪除子節(jié)點(diǎn)需通過父節(jié)點(diǎn)removeChild刪除頂層節(jié)點(diǎn)需通過樹形控件takeTopLevelItem刪除多列設(shè)置setColumnCount需在設(shè)置表頭前調(diào)用setText(col, text)設(shè)置對(duì)應(yīng)列內(nèi)容圖標(biāo)設(shè)置setIcon(col, icon)設(shè)置對(duì)應(yīng)列的圖標(biāo)默認(rèn)列索引為 0。三、容器類控件界面的有序組織與分組容器類控件本身不直接展示數(shù)據(jù)而是作為 “容器” 管理其他控件通過分組、分頁等方式優(yōu)化界面結(jié)構(gòu)讓復(fù)雜界面更易理解和操作。3.1 GroupBox控件分組的 “收納盒”QGroupBox 是帶標(biāo)題的分組框適用于將相關(guān)控件歸類展示如表單中的同一模塊、選項(xiàng)組等支持邊框顯示、標(biāo)題自定義還可設(shè)置為可勾選模式勾選后才啟用組內(nèi)控件。3.1.1 核心屬性與 API屬性 / 方法功能說明實(shí)用場(chǎng)景setTitle(const QString title)設(shè)置分組框標(biāo)題標(biāo)識(shí)分組用途setFlat(bool flat)設(shè)置是否為扁平模式無邊框簡潔界面風(fēng)格setCheckable(bool checkable)設(shè)置是否可勾選控制組內(nèi)控件啟用 / 禁用setChecked(bool checked)設(shè)置勾選狀態(tài)默認(rèn)啟用 / 禁用組內(nèi)控件setAlignment(Qt::Alignment alignment)設(shè)置組內(nèi)控件對(duì)齊方式優(yōu)化組內(nèi)布局3.1.2 基礎(chǔ)用法表單分組先創(chuàng)建控件運(yùn)行結(jié)果如下3.1.3 進(jìn)階用法扁平模式與對(duì)齊方式#include widget.h #include QGroupBox #include QPushButton #include QHBoxLayout #include QVBoxLayout Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); this-setWindowTitle(GroupBox進(jìn)階扁平模式與對(duì)齊); QVBoxLayout *mainLayout new QVBoxLayout(this); // 扁平模式分組框無邊框 QGroupBox *flatGroup new QGroupBox(操作按鈕, this); flatGroup-setFlat(true); // 扁平模式 QHBoxLayout *flatLayout new QHBoxLayout(flatGroup); flatLayout-addWidget(new QPushButton(新建, this)); flatLayout-addWidget(new QPushButton(打開, this)); flatLayout-addWidget(new QPushButton(保存, this)); flatLayout-addWidget(new QPushButton(刪除, this)); // 右對(duì)齊分組框 QGroupBox *alignGroup new QGroupBox(選項(xiàng)設(shè)置, this); alignGroup-setAlignment(Qt::AlignRight); // 組內(nèi)控件右對(duì)齊 QVBoxLayout *alignLayout new QVBoxLayout(alignGroup); alignLayout-addWidget(new QCheckBox(啟用自動(dòng)保存, this)); alignLayout-addWidget(new QCheckBox(顯示狀態(tài)欄, this)); alignLayout-addWidget(new QCheckBox(允許拖拽, this)); mainLayout-addWidget(flatGroup); mainLayout-addWidget(alignGroup); }3.1.4 GroupBox 避坑指南組內(nèi)布局GroupBox 必須設(shè)置布局管理器如 QVBoxLayout否則內(nèi)部控件無法正常顯示勾選功能setCheckable(true)后組內(nèi)控件默認(rèn)隨勾選狀態(tài)啟用 / 禁用無需手動(dòng)控制扁平模式setFlat(true)會(huì)隱藏邊框僅顯示標(biāo)題適用于簡潔界面對(duì)齊方式setAlignment控制組內(nèi)控件的整體對(duì)齊而非標(biāo)題對(duì)齊。3.2 TabWidget多頁面切換的 “導(dǎo)航欄”QTabWidget 是標(biāo)簽頁控件適用于將不同功能模塊放在不同標(biāo)簽頁中如設(shè)置界面、編輯界面等通過切換標(biāo)簽頁實(shí)現(xiàn)功能切換節(jié)省界面空間提升界面整潔度。3.2.1 核心屬性與 API屬性 / 方法功能說明實(shí)用場(chǎng)景addTab(QWidget* page, const QString label)添加標(biāo)簽頁頁面 標(biāo)題新增功能模塊insertTab(int index, QWidget* page, const QString label)在指定位置插入標(biāo)簽頁調(diào)整標(biāo)簽頁順序removeTab(int index)刪除指定標(biāo)簽頁動(dòng)態(tài)移除模塊currentIndex()獲取當(dāng)前選中標(biāo)簽頁的下標(biāo)判斷當(dāng)前激活模塊setCurrentIndex(int index)設(shè)置當(dāng)前選中標(biāo)簽頁手動(dòng)切換模塊setTabText(int index, const QString text)修改標(biāo)簽頁標(biāo)題動(dòng)態(tài)更新標(biāo)題setTabIcon(int index, const QIcon icon)設(shè)置標(biāo)簽頁圖標(biāo)美化標(biāo)簽頁setTabsCloseable(bool closeable)設(shè)置標(biāo)簽頁是否可關(guān)閉支持動(dòng)態(tài)關(guān)閉標(biāo)簽頁currentChanged(int index)標(biāo)簽頁切換時(shí)觸發(fā)的信號(hào)切換模塊時(shí)執(zhí)行初始化3.2.2 基礎(chǔ)用法功能模塊切換先創(chuàng)建控件運(yùn)行結(jié)果如下3.2.3 進(jìn)階用法標(biāo)簽頁的增加與刪除編輯.ui文件編寫代碼#include widget.h #include ui_widget.h #include QLabel #include QDebug Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui-setupUi(this); //先在每個(gè)標(biāo)簽頁中添加一個(gè)Label QLabel* label1 new QLabel(ui-tab); label1-setText(標(biāo)簽頁1); label1-resize(100, 50); QLabel* label2 new QLabel(ui-tab_2); label2-setText(標(biāo)簽頁2); label2-resize(100, 50); } Widget::~Widget() { delete ui; } void Widget::on_pushButton_clicked() { //使用addTab方法創(chuàng)建新的標(biāo)簽頁 //參數(shù)1 要指定一個(gè)QWidget //參數(shù)2 指定這個(gè)標(biāo)簽頁的text標(biāo)題,此處標(biāo)題就叫做Tab 數(shù)字 int count ui-tabWidget-count(); //獲取到標(biāo)簽頁的數(shù)量 QWidget* w new QWidget(); ui-tabWidget-addTab(w, QString(Tab ) QString::number(count 1)); //添加一個(gè)QLabel顯示內(nèi)容 QLabel* label new QLabel(w); label-setText(QString(標(biāo)簽頁) QString::number(count 1)); label-resize(100, 50); //設(shè)置新標(biāo)簽頁被選中 ui-tabWidget-setCurrentIndex(count); } void Widget::on_pushButton_2_clicked() { //獲取到當(dāng)前選中的標(biāo)簽頁的下標(biāo) int index ui-tabWidget-currentIndex(); //刪除標(biāo)簽頁 ui-tabWidget-removeTab(index); } void Widget::on_tabWidget_currentChanged(int index) { qDebug() 當(dāng)前選中的標(biāo)簽頁是 index; }運(yùn)行結(jié)果如下3.2.4 TabWidget 避坑指南頁面創(chuàng)建每個(gè)標(biāo)簽頁必須是獨(dú)立的 QWidget且需設(shè)置布局管理器否則控件無法正常排列關(guān)閉標(biāo)簽頁setTabsCloseable(true)后通過tabCloseRequested信號(hào)處理關(guān)閉邏輯需手動(dòng)調(diào)用removeTab動(dòng)態(tài)標(biāo)題通過setTabText可動(dòng)態(tài)更新標(biāo)簽頁標(biāo)題適用于顯示實(shí)時(shí)狀態(tài)嵌套布局標(biāo)簽頁內(nèi)部可嵌套任意布局支持復(fù)雜界面設(shè)計(jì)切換初始化currentChanged信號(hào)在標(biāo)簽頁切換時(shí)觸發(fā)可用于初始化當(dāng)前頁面數(shù)據(jù)??偨Y(jié)多元素與容器類控件是 Qt 界面開發(fā)的核心工具掌握它們的使用后可輕松應(yīng)對(duì)復(fù)雜數(shù)據(jù)展示和界面布局需求。如果本文對(duì)你有幫助歡迎點(diǎn)贊、收藏、轉(zhuǎn)發(fā)如有疑問或建議歡迎在評(píng)論區(qū)留言交流
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

seo網(wǎng)站外包公司微信公眾號(hào)做留言網(wǎng)站

seo網(wǎng)站外包公司,微信公眾號(hào)做留言網(wǎng)站,新網(wǎng)站一天做多少外鏈,電商網(wǎng)站有哪些使用場(chǎng)景在數(shù)字化調(diào)研日益重要的今天#xff0c;一款功能強(qiáng)大且易于部署的問卷系統(tǒng)成為眾多組織和個(gè)人不可或缺的工具。DWSu

2026/01/22 23:49:01

專業(yè)家裝建材網(wǎng)站設(shè)計(jì)黑龍江建設(shè)網(wǎng)政務(wù)系統(tǒng)

專業(yè)家裝建材網(wǎng)站設(shè)計(jì),黑龍江建設(shè)網(wǎng)政務(wù)系統(tǒng),廣州網(wǎng)站建設(shè)與實(shí)驗(yàn),建站之星官網(wǎng)建設(shè)一、設(shè)計(jì)背景與核心需求 傳統(tǒng)小型游戲機(jī)多依賴專用芯片#xff0c;開發(fā)成本高且功能固化#xff0c;難以滿足個(gè)性化開發(fā)與

2026/01/23 15:59:01

旅游建設(shè)投資公司網(wǎng)站湖南網(wǎng)站推廣哪家專業(yè)

旅游建設(shè)投資公司網(wǎng)站,湖南網(wǎng)站推廣哪家專業(yè),長沙市住房和城鄉(xiāng)建設(shè)部網(wǎng)站,手機(jī)網(wǎng)站建設(shè)選 朗創(chuàng)營銷在當(dāng)今數(shù)字游戲時(shí)代#xff0c;玩家的游戲進(jìn)度和成就已經(jīng)成為寶貴的游戲數(shù)據(jù)。然而#xff0c;復(fù)雜的二進(jìn)

2026/01/23 06:25:01