Qt 標(biāo)準(zhǔn)對話框之 QColorDialog

2018-10-05 14:47 更新

Qt 標(biāo)準(zhǔn)對話框之 QColorDialog

繼續(xù)來說 Qt 的標(biāo)準(zhǔn)對話框,這次說說 QColorDialog。這是 Qt 提供的顏色選擇對話框。

使用 QColorDialog 也很簡單,Qt 提供了 getColor()函數(shù),類似于 QFileDialog 的getOpenFileName(),可以直接獲得選擇的顏色。我們還是使用前面的 QAction 來測試下這個(gè)函數(shù):

        QColor color = QColorDialog::getColor(Qt::white, this); 
        QString msg = QString("r: %1, g: %2, b: %3").arg(QString::number(color.red()), QString::number(color.green()), QString::number(color.blue())); 
        QMessageBox::information(NULL, "Selected color", msg);

不要忘記 include QColorDialog 哦!這段代碼雖然很少,但是內(nèi)容并不少。

第一行 QColorDialog::getColor()調(diào)用了 QColorDialog 的 static 函數(shù) getColor()。這個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)是 QColor 類型,是對話框打開時(shí)默認(rèn)選擇的顏色,第二個(gè)是它的 parent。

第二行比較長,涉及到 QString 的用法。如果我沒記錯(cuò)的話,這些用法還沒有提到過,本著“有用就說”的原則,盡管這些和 QColorDialog 毫不相干,這里還是解釋一下。QString("r: %1, g: %2, b: %3")創(chuàng)建了一個(gè) QString 對象。我們使用了參數(shù)化字符串,也就是那些%1之類。在 Java 的properties 文件中,字符參數(shù)是用{0}, {1}之類實(shí)現(xiàn)的。其實(shí)這都是一些占位符,也就是,后面會(huì)用別的字符串替換掉這些值。占位符的替換需要使用 QString 的 arg()函數(shù)。這個(gè)函數(shù)會(huì)返回它的調(diào)用者,因此可以使用鏈?zhǔn)秸{(diào)用寫法。它會(huì)按照順序替換掉占位符。然后是 QString::number()函數(shù),這也是 QString 的一個(gè) static 函數(shù),作用就是把 int、double 等值換成 QString 類型。這里是把QColor 的 R、G、B 三個(gè)值輸出了出來。關(guān)于 QString 類,我們會(huì)在以后詳細(xì)說明。

第三行就比較簡單了,使用一個(gè)消息對話框把剛剛拼接的字符串輸出。

現(xiàn)在就可以運(yùn)行這個(gè)測試程序了??瓷先ズ芎唵危皇菃??

QColorDialog 還有一些其他的函數(shù)可以使用。

QColorDialog::setCustomColor()可以設(shè)置用戶自定義顏色。這個(gè)函數(shù)有兩個(gè)值,第一個(gè)是自定義顏色的索引,第二個(gè)是自定義顏色的 RGB 值,類型是 QRgb,大家可以查閱 API 文檔來看看這個(gè)類的使用,下面只給出一個(gè)簡單的用發(fā):

QColorDialog::setCustomColor(0, QRgb(0x0000FF));

getColor()還有一個(gè)重載的函數(shù),簽名如下:

QColorDialog::getColor( const QColor & initial, QWidget * parent, const QString & title, ColorDialogOptions options = 0 )

第一個(gè)參數(shù) initial 和前面一樣,是對話框打開時(shí)的默認(rèn)選中的顏色;

第二個(gè)參數(shù) parent,設(shè)置對話框的父組件;

第三個(gè)參數(shù) title,設(shè)置對話框的 title;

第四個(gè)參數(shù) options,是 QColorDialog::ColorDialogOptions 類型的,可以設(shè)置對話框的一些屬性,如是否顯示 Alpha 值等,具體屬性請查閱 API 文檔。特別的,這些值是可以使用 OR 操作的。

QColorDialog 相對簡單一些,API 文檔也很詳細(xì),大家遇到問題可以查閱文檔的哦!

本文出自 “豆子空間” 博客,請務(wù)必保留此出處 http://devbean.blog.51cto.com/448512/194031

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號