Qt QColor で使用できるカラーネーム
QColorではのコンストラクタやsetNamedColor関数で"#RRGGBB"等の形式の文字列によって色を指定することができます。
ですがこういった16進数を文字列で表現した形式ではなく"blue"や"limegreen"などのようにカラーネームを使用することもできます。
使用できるカラーネームはQColor::colorNames()で一覧を取得できますが、公式ドキュメントによるとはWorld Wide Web Consortium (W3C)によって勧告されているSVG color keyword namesに含まれるものは全て使用できるようです。
以下のページでその一覧と見本、それぞれのRGB値を見ることができます。
Basic Data Types and Interfaces – SVG 1.1 (Second Edition)
文字列がQColorに変換可能かを調べるときはQColor::isValidColor関数で変換の可否をboolで取得できます。
またQColorのインスタンスからname()で色の文字列を取得できますが、取得できる文字列はカラーネームで指定した場合でも"#RRGGBB"の形式でしか取得することができません。
#include <QDebug> #include <QColor> int main() { qDebug() << "blue == #0000ff :" << ( QColor( "blue" ) == QColor( "#0000ff" ) ); QColor blue_color; blue_color.setNamedColor( "#00f" ); qDebug() << "blue == #00f :" << ( QColor( "blue" ) == blue_color ); qDebug() << "is limegreen valid? :" << QColor::isValidColor( "limegreen" ); qDebug() << "is hoge valid? :" << QColor::isValidColor( "hoge" ); qDebug() << "QColor( \"limegreen\" ).name() :" << QColor( "limegreen" ).name(); return 0; }
出力
blue == #0000ff : true blue == #00f : true is limegreen valid? : true is hoge valid? : false QColor( "limegreen" ).name() : "#32cd32"