QT6 源,七章對話框與多窗體(6) 顏色對話框 QColorDialog :本類的屬性,信號函數,靜態成員函數,以及源代碼

(1)本類的繼承關系如下

在這里插入圖片描述

(2) 對于本標準顏色對話框來講,學會使用其靜態函數以獲取到顏色就足夠了

在這里插入圖片描述

++

在這里插入圖片描述

++

在這里插入圖片描述

(3) 開始學習本類的靜態成員函數

在這里插入圖片描述

++

在這里插入圖片描述

(4)

在這里插入圖片描述

++測試一下

在這里插入圖片描述

(5)本類的源代碼定義于頭文件 qcolordialog . h

#ifndef QCOLORDIALOG_H
#define QCOLORDIALOG_H#include <QtWidgets/qtwidgetsglobal.h>#include <QtWidgets/qdialog.h>QT_REQUIRE_CONFIG(colordialog);QT_BEGIN_NAMESPACEclass QColorDialogPrivate;/*
The QColorDialog class provides a dialog widget for specifying colors.Detailed Description :
顏色對話框的功能是允許用戶選擇顏色。例如,你可能會在繪圖程序中使用它,以允許用戶設置畫筆顏色。
靜態函數提供模態顏色對話框。靜態的`getColor()、函數會顯示對話框,并允許用戶指定顏色。
該函數還可用于讓用戶選擇帶有透明度的顏色:將`ShowAlphaChannel'選項作為額外參數傳遞。用戶可以存儲多個自定義顏色。這些自定義顏色將共享給所有顏色對話框,并在程序的執行過程中被保留。
使用`setCustomColor()`來設置自定義顏色,使用`customColor()、來獲取它們。當按下“選擇屏幕顏色”按鈕時,光標會變為一個剪交叉形狀,屏幕上的顏色會被掃描。
用戶可以通過點擊鼠標或Enter鍵來選擇一種顏色。按下ESc鍵可恢復進入該模式前的最后選擇顏色。Standard Dialogs示例展示了如何使用QColorDialog以及Qt庫中的其他內置對話框。*/class Q_WIDGETS_EXPORT QColorDialog : public QDialog
{Q_OBJECTQ_DECLARE_PRIVATE(QColorDialog)Q_PROPERTY(QColor    currentColor   //此屬性保存了對話框中當前選擇的顏色。READ     currentColor         WRITE     setCurrentColorNOTIFY    currentColorChanged)Q_PROPERTY(ColorDialogOptions  options  READ  options  WRITE  setOptions)//此屬性包含影響對話框外觀和感覺的各種選項。默認情況下,所有選項都已禁用。//選項應在顯示對話框之前設置。如果在對話框可見時設置這些選項,//  其是否立即對對話框產生影響并不確定(這取決于選項和平臺)。private:Q_DISABLE_COPY(QColorDialog)Q_PRIVATE_SLOT(d_func(), void _q_addCustom())Q_PRIVATE_SLOT(d_func(), void _q_newHsv(int h, int s, int v))Q_PRIVATE_SLOT(d_func(), void _q_newColorTypedIn(QRgb rgb))Q_PRIVATE_SLOT(d_func(), void _q_nextCustom(int, int))Q_PRIVATE_SLOT(d_func(), void _q_newCustom(int, int))Q_PRIVATE_SLOT(d_func(), void _q_newStandard(int, int))Q_PRIVATE_SLOT(d_func(), void _q_pickScreenColor())Q_PRIVATE_SLOT(d_func(), void _q_updateColorPicking())protected:void changeEvent(QEvent * event ) override; //來自于 QWidgetvoid done       (int      result) override; //來自于 QDialogQ_SIGNALS://void currentColorChanged (const QColor & color);  //這是信號函數//每當對話框中的當前顏色發生變化時,都會發出此信號。當前顏色由color指定。void          colorSelected(const QColor & color);//This signal is emitted just after the user has clicked OK to select a color to use.//The chosen color is specified by color.//此信號在用戶點擊確定選擇要使用的顏色后發出。所選顏色由color指定。public:QColor             selectedColor() const; //返回用戶通過點擊 OK或等效按鈕選擇的顏色。//注:此顏色并不總是與當前顏色屬性所表示的顏色完全一致,//因為用戶可以在最終選定要使用的顏色之前選擇不同的顏色。using QDialog::open; //將對話框顯示為窗口模態 window modal dialog對話框,并立即返回。//virtual void QDialog::open();void           open(QObject * receiver, const char * member); //指定本類里信號的槽函數//Opens the dialog and connects its colorSelected() signal to the//  slot specified by receiver and member.//The signal will be disconnected from the slot when the dialog is closed.public://Constructs a color dialog with the given parent.explicit QColorDialog(QWidget * parent = nullptr);//在使用本類的靜態成員函數的時候,是不用親自構造本顏色對話框的。explicit QColorDialog(const QColor & initial, QWidget * parent = nullptr);//Constructs a color dialog with the given parent and specified initial color.~QColorDialog();//   Q_PROPERTY(QColor    currentColor         //此屬性保存了對話框中當前選擇的顏色。
//              READ      currentColor         WRITE     setCurrentColor
//              NOTIFY    currentColorChanged)QColor    currentColor        () const;void   setCurrentColor        (const QColor & color);
Q_SIGNALS:void      currentColorChanged (const QColor & color);public://這個枚舉定義了各種影響顏色對話框外觀和感覺的選項。enum ColorDialogOption {ShowAlphaChannel    = 0x00000001, //允許用戶選擇顏色的alpha組件。NoButtons           = 0x00000002, //不顯示確定和取消按鈕。(對于“實時對話框”很有用。)DontUseNativeDialog = 0x00000004  //使用Qt的標準顏色對話框,而不是操作系統原生的顏色對話框。};Q_ENUM(ColorDialogOption)Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption)
//  //此屬性包含影響對話框外觀和感覺的各種選項。默認情況下,所有選項都已禁用。
//   Q_PROPERTY(ColorDialogOptions     options
//              READ                   options     WRITE     setOptions)ColorDialogOptions     options() const;void                setOptions(ColorDialogOptions options);void                setOption (ColorDialogOption  option, bool on = true);bool               testOption (ColorDialogOption  option) const;//virtual void QWidget::setVisible(bool visible);void setVisible(bool visible) override;/*彈出一個模態顏色對話框,帶有指定的窗口標題 title(如果未指定則使用“選擇顏色 Select Color”作為標題),讓用戶選擇一種顏色,并返回該顏色。該顏色最初被設置為`initial。該對話框是`parent'的子項。如果用戶取消對話框,則返回-個無效的顏色(請參閱、QColor::isValid()')。options參數允許你自定義對話框。*/static QColor getColor( const   QColor             & initial = Qt::white,QWidget            * parent  = nullptr  ,const   QString            & title   = QString(),ColorDialogOptions   options = ColorDialogOptions()  );//返回QColorDialog支持的自定義顏色數量。所有顏色對話框共享相同的自定義顏色。static int           customCount  ();//Returns the custom color at the given index as a QColor value.static QColor        customColor(int index);static void       setCustomColor(int index, QColor color);//將自定義顏色設置為QColor值。//注:此功能不適用于macOs平臺上的原生顏色對話框。//如果您仍然需要此功能,請使用`QColorDialog::DontUseNativeDialog選項。//Returns the standard color at the given index as a QColor value.static QColor      standardColor(int index);static void     setStandardColor(int index, QColor color);//將索引處的標準顏色設置為QColor顏色值。//注:此功能不適用于macOs平臺上的原生顏色對話框。//如果您仍然需要此功能,請使用`QColorDialog::DontUseNativeDialog~選項。}; //完結 class QColorDialog : public QDialogQ_DECLARE_OPERATORS_FOR_FLAGS(QColorDialog::ColorDialogOptions)QT_END_NAMESPACE#endif // QCOLORDIALOG_H

(6)

謝謝

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

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

相關文章

金倉數據庫:融合進化,智領未來——2025年數據庫技術革命的深度解析

引言 在數字中國戰略的推動下&#xff0c;數據庫作為數字經濟的基礎設施&#xff0c;正經歷著前所未有的技術重構。2025年7月15日&#xff0c;電科金倉以"融合進化&#xff0c;智領未來"為主題&#xff0c;發布了新一代數據庫產品矩陣&#xff0c;標志著國產數據庫在…

【人工智能99問】卷積神經網絡(CNN)的結構和原理是什么?(10/99)

文章目錄卷積神經網絡&#xff08;CNN&#xff09;的結構及原理一、CNN的核心結構1. 輸入層&#xff08;Input Layer&#xff09;2. 卷積層&#xff08;Convolutional Layer&#xff09;2. 卷積層的核心機制&#xff1a;局部感受野與權值共享3. 池化層&#xff08;Pooling Laye…

CCF編程能力等級認證GESP—C++7級—20250628

CCF編程能力等級認證GESP—C7級—20250628單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09;判斷題&#xff08;每題 2 分&#xff0c;共 20 分&#xff09;編程題 (每題 25 分&#xff0c;共 50 分)線圖調味平衡單選題&#xff08;每題 2 分&#xff0c;共 30 分&…

《Python 類設計模式:屬性分類(類屬性 VS 實例屬性)與方法類型(實例 / 類 / 靜態)詳解》

Python 類和對象&#xff1a;從 "圖紙" 到 "實物" 的編程思維面向對象編程&#xff08;Object-Oriented Programming&#xff0c;簡稱OOP &#xff09;是一種通過組織對象來編程的方法。1.初識類和對象&#xff1a;用生活例子看透核心概念1.1類-class物與類…

Eureka服務端啟動

目錄 1、相關文章 2、創建eureka-server子工程 3、父工程build.gradle引入版本依賴管理 4、子工程build.gradle引入依賴 5、將main重命名為EurekaApplication并修改代碼 6、添加application.yml文件 7、啟動工程并訪問 8、訪問界面如下 9、 完整目錄結構 1、相關文章 …

AWS Partner: Sales Accreditation (Business)

AWS Partner: Sales Accreditation &#xff08;Business&#xff09;云概念和AWS云計算什么是云計算&#xff1f;計算的演變趨勢云計算部署模型AWS 客戶采用的模式為什么客戶選擇AWSAWS競爭優勢高可用的全球基礎設施AWS服務服務廣度和深度AWS產品和服務服務類別AWS解決方案庫A…

深入理解設計模式之中介者模式:解耦對象交互的利器

為什么需要中介者&#xff1f;在軟件開發中&#xff0c;我們經常會遇到對象之間需要相互通信的場景。當系統規模較小時&#xff0c;對象直接相互引用并通信可能不會帶來太大問題。但隨著系統復雜度增加&#xff0c;對象間的交互關系會變得錯綜復雜&#xff0c;形成一個復雜的網…

從 0 安裝 Label Studio:搭建可后臺運行的數據標注平臺(systemd 實踐

本文將介紹如何使用 pip 安裝 Label Studio&#xff0c;并通過 systemd 實現開機自啟與后臺運行&#xff0c;適用搭建個人項目的數據標注平臺。 一、Label Studio 簡介 Label Studio 是一個開源、跨模態的數據標注工具&#xff0c;支持文本、圖像、音頻、視頻、HTML等多種類型…

【數據結構】鏈表(linked list)

目錄 一、鏈表的介紹 二、單鏈表 1. 單鏈表的初始化 2. 單鏈表的插入 &#xff08;1&#xff09;動態申請一個節點 &#xff08;2&#xff09;頭插法 &#xff08;3&#xff09;尾插法 &#xff08;4&#xff09;按照位置來插入 &#xff08;5&#xff09;在地址之前插…

反序列化漏洞1-PHP序列化基礎概念(0基礎超詳細)

一.PHP序列化基礎概念首先當我們看到反序列化漏洞這個概念&#xff0c;我們的第一個問題是什么是反序列化&#xff1f;那么我們要知道什么是反序列化就要知道什么是序列化。序列化就是可以將一個對象壓縮并格式化成字符串&#xff0c;可以將該對象保存下來&#xff0c;以便存儲…

【微服務】Ocelot微服務網關

目錄 一、目的 二、Ocelot介紹 三、.Net中使用Ocelot搭建網關服務 3.1 搭建網關Ocelot步驟 3.1.1、創建Net7 WebApi服務 3.1.2、Nuget引入-Ocelot程序包&#xff08;版本&#xff1a;19.0.2&#xff09; 3.1.3、配置中間件和IOC注冊 3.1.4 配置文件編輯Ocelot網關配置信…

零基礎入門:用按鍵精靈實現視頻自動操作(附完整腳本)

摘要&#xff1a;本文手把手教你編寫視頻平臺的自動化腳本&#xff0c;涵蓋點擊、循環、防檢測等核心技巧&#xff0c;無需編程基礎&#xff0c;輕松實現自動播放/點贊/跳過廣告。&#xff08;使用按鍵精靈2024版演示&#xff09; 一、應用場景 自動化操作&#xff1a;自動跳過…

AI(學習筆記第六課) 使用langchain進行AI開發 load documents(csv和文件夾)

文章目錄AI(學習筆記第六課) 使用langchain進行AI開發 load documents(csv和文件夾)學習內容&#xff1a;1.load documents&#xff08;csv&#xff09;1.1 學習url1.2 load csv文件1.2.1 默認load1.2.2 csv文件內容1.2.2 執行csv文件的load1.3 Customizing the CSV parsing an…

企業運維實戰:Jenkins 依賴 JDK21 與應用需 JDK1.8 共存方案(含流水線配置)

前言&#xff1a;在企業運維中&#xff0c;“工具升級”與“業務兼容”的平衡始終是核心挑戰。近期我們遇到一個典型場景&#xff1a;Jenkins 升級到 2.450 版本后&#xff0c;強制要求 JDK21 運行環境&#xff1b;但開發團隊的應用程序因框架依賴&#xff0c;必須使用 JDK1.8 …

爬蟲小知識三:selenium庫

前言 selenium 庫是一種用于 Web 應用程序測試的工具&#xff0c;它可以驅動瀏覽器執行特定操作&#xff0c;自動按照腳本代碼做出單擊、輸入、打開、驗證等操作&#xff0c;支持的瀏覽器包括 IE、Firefox、Safari、Chrome、Opera 等。 與 requests 庫不同的是&#xff0c;se…

Jmeter使用 -1

1 接口測試1.1 為什么要進行接口測試接口測試能夠繞過前端校驗&#xff0c;對后端的接口處理邏輯進行測試&#xff08;數據的邊界/格式/類型&#xff09;在一些需要重復測試的需求中&#xff0c;接口自動化的效率比手工執行效率高1.2 接口測試流程熟悉API接口文檔&#xff08;接…

GitHub 趨勢日報 (2025年07月16日)

&#x1f4ca; 由 TrendForge 系統生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日獲星趨勢圖 今日獲星趨勢圖2415markitdown570claude-code434ART330erpnext150MusicFree146rustdesk129vanna80…

Python+Tkinter制作音頻格式轉換器

我們將使用Python的Tkinter庫來構建一個音頻格式轉換器界面。由于音頻轉換需要實際的處理&#xff0c;我們將使用pydub庫&#xff08;需要安裝&#xff09;來進行音頻格式轉換。同時&#xff0c;我們會使用ffmpeg作為后端&#xff0c;因此請確保系統中已安裝ffmpeg并添加到環境…

Haproxy算法精簡化理解及企業級高功能實戰

文章目錄4. Haproxy的算法4.1 靜態算法4.1.1 static-rr&#xff1a;基于權重的輪詢調度1. 示例&#xff1a;4.1.2 first1. 示例2. 測試效果&#xff1a;4.2 動態算法4.2.1 roundrobin1. 示例2. 動態調整權重4.2.2 leastconn1. 示例4.3 其他算法4.3.1 source1. 示例2. 測試4.3.2…

git fork的項目遠端標準協作流程 倉庫設置[設置成upstream]

這是一個在開源協作中非常常見的配置。 簡單來說&#xff0c;upstream 在這里指的是你 Fork 來的那個原始的、官方的倉庫。 下面我們來詳細解釋一下這個 git remote -v 輸出的含義&#xff1a; 1. 兩條“遙控器” (Remotes) 你的 git 配置了兩個遠程倉庫的地址&#xff0c;就像…