(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)
謝謝