繼續來說Qt的標准對話框,這次說說QColorDialog。這是Qt提供的顏色選擇對話框。
使用QColorDialog也很簡單,Qt提供了getColor()函數,類似於QFileDialog的getOpenFileName(),可以直接獲得選擇的顏色。我們還是使用前面的QAction來測試下這個函數:
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哦!這段代碼雖然很少,但是內容並不少。
第一行QColorDialog::getColor()調用了QColorDialog的static函數getColor()。這個函數有兩個參數,第一個是QColor類型,是對話框打開時默認選擇的顏色,第二個是它的parent。
第二行比較長,涉及到QString的用法。如果我沒記錯的話,這些用法還沒有提到過,本著“有用就說”的原則,盡管這些和 QColorDialog毫不相干,這裡還是解釋一下。QString("r: %1, g: %2, b: %3")創建了一個QString對象。我們使用了參數化字符串,也就是那些%1之類。在Java的properties文件中,字符參數是用{0}, {1}之類實現的。其實這都是一些占位符,也就是,後面會用別的字符串替換掉這些值。占位符的替換需要使用QString的arg()函數。這個函數會返回它的調用者,因此可以使用鏈式調用寫法。它會按照順序替換掉占位符。然後是QString::number()函數,這也是QString的一個 static函數,作用就是把int、double等值換成QString類型。這裡是把QColor的R、G、B三個值輸出了出來。關於QString 類,我們會在以後詳細說明。
第三行就比較簡單了,使用一個消息對話框把剛剛拼接的字符串輸出。
現在就可以運行這個測試程序了。看上去很簡單,不是嗎?
QColorDialog還有一些其他的函數可以使用。
QColorDialog::setCustomColor()可以設置用戶自定義顏色。這個函數有兩個值,第一個是自定義顏色的索引,第二個是自定義顏色的RGB值,類型是QRgb,大家可以查閱API文檔來看看這個類的使用,下面只給出一個簡單的用發:
QColorDialog::setCustomColor(0, QRgb(0x0000FF));
getColor()還有一個重載的函數,簽名如下:
QColorDialog::( const QColor & initial, QWidget * parent, const QString & title, ColorDialogOptions options = 0 )
第一個參數initial和前面一樣,是對話框打開時的默認選中的顏色;
第二個參數parent,設置對話框的父組件;
第三個參數title,設置對話框的title;
第四個參數options,是QColorDialog::ColorDialogOptions類型的,可以設置對話框的一些屬性,如是否顯示Alpha值等,具體屬性請查閱API文檔。特別的,這些值是可以使用OR操作的。
QColorDialog相對簡單一些,API文檔也很詳細,大家遇到問題可以查閱文檔的哦!
出處:http://devbean.blog.51cto.com/448512/214164