選項卡式小部件QTabWidget

文章目錄

  • 1. 詳細介紹
  • 2. 常用屬性
  • 3. 信號
  • 4. 常用函數
  • 5. 官方示例Tab Dialog

QTabWidget提供一堆選項卡式小部件。

1. 詳細介紹

QTabWidget顯示

選項卡式部件提供一個選項卡欄和一個用于顯示與每個選項卡相關的頁面的頁面區域

默認情況下,選項卡欄顯示在頁面區域上方,可以使用不同的配置,設置TabPosition屬性。

每個選項卡都與一個不同的小部件相關聯,這個小部件成為頁面。

頁面區域中只顯示當前頁面,所有其他頁面都被隱藏。可以通過單擊選項卡或按下Alt+字母快捷鍵來顯示不同的頁面。

一般使用QTabWidget的方法如下操作:

  1. 創建一個QTabWidget對象;

  2. 為選項卡中的每個頁面創建一個QWidget對象,該對象不要指定父窗口;

  3. 將子窗口小部件插入頁面窗口小部件,使用布局將其正常定位;

  4. 調用addTab()或insertTab()函數將頁面小部件放入選項卡小部件中,為每個選項卡頁面提供一個合適的標簽和一個可選的鍵盤快捷鍵。

    示例如下:

    // 1. 創建一個QTabWidget對象QTabWidget *tabWidget = new QTabWidget(this);// 2. 為選項卡中的頁面創建QWidget對象,創建2個選項卡QWidget *page1 = new QWidget;QWidget *page2 = new QWidget;//3. 將子窗口小部件插入到頁面中// page1頁面插入一個按鈕,page2頁面插入一個標簽QPushButton *btn = new QPushButton(tr("&Show"), page1);QLabel *label = new QLabel(tr("wait for show"), page2);// 4. 將頁面添加到QTabWidget對象中,并為每個選項卡提供一個合適的標簽和可選的鍵盤快捷鍵tabWidget->addTab(page1, tr("page-1"));tabWidget->addTab(page2, tr("page-2"));

顯示如下:

page1

page2

選項卡的位置由tabPosition屬性定義,默認在North;
形狀由tabShape定義,默認是Rounded。

當選擇一個頁面時會發送currentChanged()信號。

當前頁面的索引調用currentIndex()獲取,當前頁面的部件調用currentWidget()函數獲取。

widget()函數獲取給定索引的頁面部件的指針,indexOf()函數查找部件的索引位置。

setCurrentWidget()或setCurrentIndex()顯示特定頁面。

可以調用setTabText()或setTabIcon()函數更改選項卡的文本和圖標;

可以使用removeTab()函數刪除選項卡及其關聯頁面。

調用setTabEnabled()可以啟用或禁用選項卡頁面。

  • 如果啟用某個選項卡頁面,會正常繪制該選項卡,并且可以選擇該選項卡;
  • 如果禁用某個選項卡頁面,以不同方式繪制該選項卡,且用戶無法選擇此選項卡。
    需要注意的是,即使禁用了某個頁簽,頁面仍然是可見的。

選項卡是拆分復雜對話框的一種很好的方法。另一種選擇是使用QStackedWidget,為其提供一些在頁面之間導航的方法,比如QToolBar或QListWidget。

QTabWidget中的大部分功能由QToolBar(位于頂部,提供選項卡)和QStackedWidget(大部分區域,組織各個頁面)提供。

2. 常用屬性

除了繼承自QWidget的屬性外,QTabWidget類提供了一些常用的屬性,如下:

屬性類型及說明
countint,選項卡欄中的選項卡個數
currentIndexint,當前頁面的索引,-1表示沒有當前部件
documentModelbool,標志選項卡部件是否以適合文檔頁面的模式呈現。
true不會呈現選項卡部件框架,此時適用于顯示文檔類型
elideModeQt::TextElideMode,如何消隱選項卡欄中的文本。
控制當沒有足夠的空間顯示給定選項卡欄大小的項目時,如何對其進行消隱。
iconSizeQSize,選項卡欄中圖標的大小。
movablebool,用戶是否可以在選項卡區域內移動選項卡。
tabBarAutoHidebool,如果為true,選項卡欄包含的選項卡少于2個時,該選項卡欄將自動隱藏。默認情況下,該屬性為false。
tabPositionTabPosition,選項卡欄的位置
tabShapeTabShape,選項卡小部件中選項卡的形狀。
tabsClosablebool,是否將關閉按鈕自動添加到每個選項卡。
usesScrollButtonsbool,當選項卡欄有多個按鈕時,此屬性決定是否應使用按鈕滾動選項卡。
當選項卡欄中的選項卡太多而無法容納其大小時,選項卡欄可以選擇擴展其大小,也可以選擇添加允許滾動選項卡的按鈕。

3. 信號

QTabWidget提供的信號有:

信號說明
currentChanged()頁面索引發生變化時發送該信號
tabBarClicked()用戶單擊索引處的選項卡時,發出該信號。
tabBarDoubledClicked()用戶雙擊索引處的選項卡時發出該信號。
tabCloseRequested()單擊選項卡上的關閉按鈕時發出此信號。

4. 常用函數

除了與獲取和設置屬性相關的函數外,QTabWidget還提供了一些有用的函數:

  • 插入頁面函數
    addTab()/insertTab(),如果在show()之后調用該函數,布局系統將嘗試根據其小部件層次結構的變化進行調整,可能導致閃爍。為了防止這種情況發生,可以在更改之前將updateEnabled屬性設置為false,在完成更改之后將屬性設置為true,使小部件再次接收繪制事件。

  • 刪除或清空
    clear(),移除所有的頁面,但是不刪除它們。
    ? removeTab(),移除指定索引處的頁面,部件本身不會被刪除。

  • 選項卡欄相關
    tabBar(),獲取QTabBar類對象。

5. 官方示例Tab Dialog

官方示例Tab Dialog顯示了如何使用QTabWidget類構建選項卡對話框。

選項卡對話框示例由一個TabDialog類組成,該類提供三個選項卡,每個選項卡都包含有關特定文件的信息,以及兩個用于接受或拒絕對話框內容的標準按鈕。

相關文檔說明及代碼見:https://github.com/Innern/Qt/tree/master/Widgets/TabWidget。

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

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

相關文章

Vue.js - 計算屬性與偵聽器 【0基礎向 Vue 基礎學習】

文章目錄 計算屬性 computedcomputed 的使用方法computed 與 method 的區別計算屬性完整寫法 watch 偵聽器(監視器)簡單寫法 → 簡單類型數據,直接監視完整寫法 → 添加額外配置項 計算屬性 computed computed 的使用方法 **概念&#xff1…

web題解,基礎知識鞏固(qsnctf)

1.文章管理系統 1)打開題目,把它頁面翻完了,沒看懂它有啥用 2)看了看源碼,也是一樣的,沒找到有用的東西 3)想著可能還是在隱藏文件里找,那我就直接用dirsearch掃掃看 4)…

初識C++ · 模擬實現vector

目錄 前言: 1 部分簡單函數的實現 2 push_back和pop_back 3 reserve和resize 4 Print_vector 5 insert和erase 6 拷貝構造 7 構造 8 賦值 9 memcpy的問題 10 迭代器失效 前言: 繼上文模擬實現了string之后,接著就模擬實現vector&…

DataFrame—數據匯總9

s3.sort_index() 文章最前: 我是Octopus,這個名字來源于我的中文名--章魚;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github ;這博客是記錄我學習的點點滴滴,如果您對 Python、Java、AI、算法有興趣&#xf…

MyBatis復習筆記

3.Mybatis復習 3.1 xml配置 properties&#xff1a;加載配置文件 settings&#xff1a;設置駝峰映射 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings>typeAliases&#xff1a;類型別名設置 #這樣在映射…

如何去除視頻上的文字?免費無痕去水印分享!視頻制作良器!

對于需要進行二次創作的視頻素材&#xff0c;去除原有的文字可以提供一個更加干凈的畫布&#xff0c;方便創作者在其基礎上進行新的創作和編輯。同時&#xff0c;去除文字后的視頻也更方便分享到各種平臺&#xff0c;避免因為平臺對文字的限制而導致視頻無法發布或傳播。 要去除…

Kotlin 標準函數 with、run、apply 的定義和使用

Kotlin 標準函數 with、run、apply 的定義和使用 1. with 函數 定義&#xff1a; with 函數允許你在一個對象的上下文中執行一個 lambda 表達式&#xff0c;而不需要在 lambda 表達式中重復引用該對象。 kotlin.internal.InlineOnly public inline fun <T, R> with(r…

云計算期末復習(1)

云計算基礎 作業&#xff08;問答題&#xff09; &#xff08;1&#xff09;總結云計算的特點。 透明的云端計算服務 “無限”多的計算資源&#xff0c;提供強大的計算能力 按需分配&#xff0c;彈性伸縮&#xff0c;取用方便&#xff0c;成本低廉資源共享&#xff0c;降低企…

python 3.10 install on centos

CentOS 7 安裝 Python 3.10_yum python3.10-CSDN博客

Homebrew安裝mysql之后,啟動和使用MySQL服務:

啟動MySQL服務&#xff1a; brew services start mysql 手動啟動服務&#xff1a; mysql.server start 例如&#xff1a; mysql.server start Starting MySQL .. SUCCESS! 停止 MySQL服務&#xff1a; brew services stop mysql 或者 mysql.server stop 重啟MySQL服務&a…

IDEA使用Maven打包項目的所有的依賴

要使用 Maven 命令將 Spring Boot 項目的依賴打包到 lib 文件夾中&#xff0c;你可以在終端中運行以下命令&#xff1a; mvn dependency:copy-dependencies -DoutputDirectory./lib這個命令會將項目的所有依賴&#xff08;包括運行時依賴&#xff09;復制到當前目錄的 lib 文件…

Windows操作系統基本知識整理

目錄 引言 一、Windows操作系統的發展歷史 1.1 Windows 1.0到Windows 3.0 1.2 Windows 95到Windows Me 1.3 Windows NT到Windows 2000 1.4 Windows XP到Windows 7 1.5 Windows 8到Windows 10 二、Windows操作系統的核心組件 2.1 內核 2.2 文件系統 2.3 圖形用戶界面&…

內網橫向移動小補充 --->PTK

大家別急&#xff0c;我的基于資源的約束性委派攻擊還在寫&#xff0c;這個東西一時半會講不清楚&#xff0c;所以我在這里先來補充一點橫向移動以前沒說好的東西&#xff01;&#xff01;&#xff01; 在更啦&#xff0c;別催啦~~~~ 還記得我之前在內網滲透里面講過這個PTK&a…

亞馬遜云主管馬特·加爾曼面臨壓力,致力于在人工智能領域趕超競爭對手

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

mysql中連接查詢的成本

大家好。上篇文章我們講了mysql中成本的含義以及單表查詢如何計算成本。現在我們接著講講mysql中連接查詢的成本。 在講之前&#xff0c;我們先創建兩張一樣的表single_table和single_table2&#xff0c;并在表中插入10000條數據。在下面的講解中&#xff0c;我們稱single_tab…

java并發工具類都有哪些

Java中的并發工具類包括&#xff1a; CountDownLatch CountDownLatch允許一個或多個線程等待其他線程完成某些操作。它通常用于線程間的同步&#xff0c;例如在一個線程完成其工作后通知其他線程繼續執行。 CyclicBarrier CyclicBarrier是一個同步輔助類&#xff0c;它允許一…

使用@Transactional 注解下,事務失效的場景

前言 Transactional是一種基于注解管理事務的方式&#xff0c;spring通過動態代理的方式為目標方法實現事務管理的增強。 Transactional使用起來方便&#xff0c;但也需要注意引起Transactional失效的場景&#xff0c;本文總結了七種情況&#xff0c;下面進行逐一分析。 一、…

【面試必看】Java并發

并發 1. 線程 1. 線程vs進程 進程是程序的一次執行過程&#xff0c;是系統運行程序的基本單位&#xff0c;因此進程是動態的。 系統運行一個程序即是一個進程從創建&#xff0c;運行到消亡的過程。在 Java 中&#xff0c;當我們啟動 main 函數時其實就是啟動了一個 JVM 的進…

ChaosMeta V0.7.0 版本發布 進入CNCF混沌工程全景圖

混沌工程 ChaosMeta 的全新版本 V0.7.0 現已正式發布&#xff01;該版本包含了許多新特性和增強功能&#xff0c;在編排界面提供了多集群管理&#xff0c;在代碼層面支持多命令下發通道的選擇。另外由螞蟻集團發起的ChaosMeta于北京時間2024年1月10日正式進入CNCF混沌工程全景圖…

20232906 2023-2024-2 《網絡與系統攻防技術》第十一次作業

20232906 2023-2024-2 《網絡與系統攻防技術》第十一次作業 1.實驗內容 一、web瀏覽器滲透攻擊 任務&#xff1a;使用攻擊機和Windows靶機進行瀏覽器滲透攻擊實驗&#xff0c;體驗網頁木馬構造及實施瀏覽器攻擊的實際過程。 二、取證分析實踐—網頁木馬攻擊場景分析 ①首先你…