qt QPalette的原理與使用

QPalette類用于控制控件的風格,即任意一個地方的繪制方式。每個控件或者說qwidget對象內部都有一個QPalette對象。

在paintEvent(QPaintEvent *event)函數中,其實就是調用該控件的QPalette內容來進行繪制的了。

例如:

QStyleOptionTab opt;

opt.palette.setColor(QPalette::Button, mColors[wid]);

painter.drawControl(QStyle::CE_TabBarTabShape, opt);

調色板QPalette類包含了部件各種狀態的顏色組(ColorGroup)以及顏色角色(ColorRole)兩個屬性。

顏色組:一個調色板包含3種狀態:激活(Active),失效(Disabled)和非激活(Inactive)。Qt中的所有部件都包含一個調色板,并且使用各自的調色板來繪制它們自身,這樣可以使用戶界面更容易配置,也更容易保持一致。

顏色角色:用來指定該顏色所起的作用,如背景顏色或者是文本顏色等,主要的顏色角色如表所列。

只要分別設置好了這兩方面,那么該控件的繪制風格顏色也就確定了。

注:QPalette::Base一般也用作背景色。具體不知道一個控件哪部分屬于什么角色,就在設計師界面中,選中mainwindow,屬性表格中設置palette,改變調色板,自己每個顏色調整一下,看看效果就知道了。

此外,這個palette默認是子對象繼承父對象的,即只要mainwindow設置了比如palette中背景色為黑色,文本顏色為白色,那么整個軟件都是這種風格了,這也就是軟件實現多個風格切換設置的原理。此外,qt提供了一些風格可以選擇,fusion,windows,winxp,等等,可以直接用的。

參考博客:Qt-風格化_qt setstyle_Half-up的博客-CSDN博客

注:QTabBar的背景色設置中,其角色為QPalette::Button。

所以,想要實現qtabwidget的每個標簽頁顯示不同的背景色,因為該控件乃至它的子控件QTabBar都沒有提供修改標簽頁背景色的接口(因為QTabBar是一個widget,但是它的每個標簽頁卻不是,而是直接畫出來的,所以沒有接口),所以需要我們在QTabBar的paintEvent函數里自己去畫出來。關于這個可以參考這個博客:c++ - Qt TabWidget Each tab Title Background Color - Stack Overflow

這里需要注意的是,需要明確設置該tabbar控件的風格為fusion,才能生效,如下:

setStyle(QStyleFactory::create("fusion")); ? ?

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

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

相關文章

《論文閱讀12》RandLA-Net: Ef?cient Semantic Segmentation of Large-Scale Point Clouds

一、論文 研究領域:全監督3D語義分割(室內,室外RGB,kitti)論文:RandLA-Net: Ef?cient Semantic Segmentation of Large-Scale Point Clouds CVPR 2020 牛津大學、中山大學、國防科技大學 論文鏈接論文gi…

Kafka-eagle監控平臺

Kafka-Eagle簡介 在開發工作中,當業務不復雜時,可以使用Kafka命令來進行一些集群的管理工作。但如果業務變得復雜,例如:需要增加group、topic分區,此時,再使用命令行就感覺很不方便,此時&#x…

Vim學習(二)—— 編譯C程序

打開終端,這里以MobaXterm為例, 郵件創建新的空文件并命名, 然后cd到對應路徑下,用 vim hello.cvim打開創建的文件,進入編輯模式,編輯完程序后按Esc退出編輯模式,輸入 :wq保存并退出&#xf…

linux安裝wkhtmltopdf(清晰明了)

概述 在公司項目中使用到 wkhtmltopdf 轉換PDF,由于 wkhtmltox-0.12.5 版本 echarts 圖形虛線樣式,需要升級 wkhtmltox-0.12.6 版本來解決。 官網地址 wkhtmltopdf :https://wkhtmltopdf.org/ windows 安裝 下載流程及安裝流程 進入官…

C++ 關鍵字override,final的作用

文章目錄 一、為什么要引入這兩個關鍵字?1.虛函數復寫2. 類繼承 二、override三、final C11引入這兩個關鍵字 一、為什么要引入這兩個關鍵字? 1.虛函數復寫 不能阻止某個虛函數進一步重寫 本意寫一個新函數,錯誤重寫基類虛函數(子類中 virtual 關鍵字可省略) 本…

《系統架構設計師教程》重點章節思維導圖

內容來自《系統架構設計師教程》,篩選系統架構設計師考試中分值重點分布的章節,根據章節的內容整理出相關思維導圖。 重點章節 第2章:計算機系統知識第5章:軟件工程基礎知識第7章:系統架構設計基礎知識第8章&#xff1…

接口自動化框架httprunner 是如何生成動態類

HttpRunner 是一個用于接口自動化測試的工具,它使用了 Python 中的 type 函數來生成動態類。 在 HttpRunner 中,通過使用 type 函數和 GenericTestCaseMeta 元類,動態地生成測試用例類。 下面是一個示例代碼展示了如何使用 type 函數來生成…

Kotlin反射訪問androidx.collection.LruCache類私有變量

Kotlin反射訪問androidx.collection.LruCache類私有變量 androidx.collection.LruCache類中定義了一個名為map的LinkedHashMap,map存儲了所有LruCache的數據,有時候需要遍歷訪問該LinkedHashMap,取出里面的值,但是LruCache代碼實…

GPU Dissolve(GPU 消散)學習GPU Instancing

一:摘要 通過制作一個模型GPU消散效果來學習GPU Instancing 也就是實例化。 目標效果是楊超大佬文章《GPU shatter》里面的消散效果如圖: Tags:模型頂點分裂(Mesh Vertex Splitting), 實例化繪制(GPU Instancing Drawing)&#x…

開源可商業運營的ChatGpt網頁源碼v1.2.2

🤖 主要功能 后臺管理系統,可對用戶,Token,商品,卡密等進行管理 精心設計的 UI,響應式設計 極快的首屏加載速度(~100kb) 支持Midjourney繪畫和DALLE模型繪畫,GPT4等應用 海量的內置 prompt 列表,來自中文和英文 一鍵導…

【猿灰灰贈書活動 - 02期】- 【Java從入門到精通2023年7月最新(第7版)】

說明:博文為大家爭取福利,與清華大學出版社合作進行送書活動 圖書:《Java從入門到精通》 一、好書推薦 圖書介紹 Java入門經典,95萬Java程序員的入行選擇。配備升級版Java開發資源庫,在線大咖課在線答疑,學…

C語言 棱形圖案

目錄 一、問題分析 上部分: 下部分: 二、代碼演示 一、問題分析 如上圖所示,我們可以將棱形進行拆解,分為上下兩個部分。 上部分: 通過觀察,我們得到 單邊空格數 上半部分總行數 - 行數 - 1 …

Nginx詳解

1、高并發時代 單臺tomcat在理想情況下可支持的最大并發數量在200~500之間,如果大于這個數量可能會造成響應緩慢甚至宕機。 解決方案是通過多臺服務器分攤并發壓力,這不僅需要有多臺tomcat服務器,還需要一臺服務器專門用來分配請求。這既是…

Mysql - 配置Mysql主從復制-keepalived高可用-讀寫分離集群

目錄 高可用: 為什么需要高可用呢? 高可用的主要作用: keepalived是什么?它用在哪里? 什么是VRRP協議,它的作用是什么? 搭建一個基于keepalived的高可用Mysql主從復制讀寫分離集群 一、項…

MongoDB-yum安裝修改數據目錄后啟動失敗

# 問題 mongodb 進程權限默認會被 SELinux 管理,修改配置中默認 storage.dbPath 、systemLog.path 造成啟動失敗。 # 解決方案 ① 修改為默認路徑或重新安裝 /var/lib/mongo /var/log/mongodb/mongod.log② 臨時關閉 SELINUX 權限控制 setenforce 0③ 永久關閉 SE…

Vue Baidu Map--自定義點圖標bm-marker

自定義點圖標 將準備好的圖標放到項目中 使用import引入&#xff0c; 并在data中進行聲明 <script> import mapIconRed from ./vue-baidu-map/img/marker_red_sprite.png export default {data() {return {mapIconRed,}}, } </script>在<bm-marker>中加入參…

【Linux】進程的基本屬性|父子進程關系

個人主頁&#xff1a;&#x1f35d;在肯德基吃麻辣燙 我的gitee&#xff1a;Linux倉庫 個人專欄&#xff1a;Linux專欄 分享一句喜歡的話&#xff1a;熱烈的火焰&#xff0c;冰封在最沉默的火山深處 文章目錄 前言進程屬性1.進程PID和PPID2.fork函數創建子進程1&#xff09;為什…

C語言學習筆記---數據的存儲詳解

C語言程序設計筆記---015 C語言數據的存儲1、數據類型的意義1.1、unsigned與signed數據類型例程11.2、補碼與原碼相互轉換例程2 2、大小端的介紹2.1、大小端的例程12.2、大小端的例程2 --- 判斷當前編譯器環境屬于大端或小端 3、綜合練習題探究數據的存儲3.1、練習題13.2、練習…

自動化安裝系統(一)

系統安裝過程 加載boot loader加載啟動安裝菜單加載內核和initrd文件加載根系統運行anaconda的安裝向導 安裝光盤中與安裝相關的文件 安裝autofs啟動后會自動出現/misc目錄。 在虛擬機設置中添加CD/DVD&#xff0c;使用系統ISO文件&#xff0c;登錄系統后mount /dev/cdrom …

青翼科技自研2路250MSPS DA回放FMC子卡模塊

FMC150_V30是一款基于VITA57.1規范的2路125MSPS采樣率16位分辨率AD采集、2路250MSPS采樣率16位分辨率DA回放FMC子卡模塊。該模塊遵循VITA57.1規范&#xff0c;可直接與符合VITA57.1規范的FPGA載卡配合使用&#xff0c;板卡ADC器件采用ADI公司的AD9268芯片&#xff0c;板卡DAC器…